1b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu/******************************************************************************
2b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
3b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  Copyright (C) 2001-2012 Broadcom Corporation
4b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
5b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  Licensed under the Apache License, Version 2.0 (the "License");
6b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  you may not use this file except in compliance with the License.
7b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  You may obtain a copy of the License at:
8b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
9b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  http://www.apache.org/licenses/LICENSE-2.0
10b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
11b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  Unless required by applicable law or agreed to in writing, software
12b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  distributed under the License is distributed on an "AS IS" BASIS,
13b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  See the License for the specific language governing permissions and
15b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  limitations under the License.
16b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
17b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu ******************************************************************************/
18b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu
19b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu/******************************************************************************
20b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
21b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  This file contains timer definitions from WIDCOMM's Universal Embedded
22b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  Drivers API.
23b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
24b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu ******************************************************************************/
2545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
2645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#ifndef UTIMER_H
2745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_H
2845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
2945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/*******************************************************************************
3045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Timer APIs
3145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu*******************************************************************************/
3245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
3345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Timer IDs ****/
3445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
3545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_ID_1               0
3645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_ID_2               1
3745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_ID_3               2
3845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_ID_4               3
3945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
4045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_NUM_TIMERS         4     /* Number of timers supported */
4145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
4245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUTIMER_ID;
4345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
4445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Timer types ****/
4545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
4645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_TYPE_PERIODIC      0
4745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_TYPE_ONESHOT       1
4845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
4945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUTIMER_TYPE;
5045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
5145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
5245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Timer time ****/
5345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
5445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT32 tUTIMER_TIME;
5545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
5645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
5745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Timer configuration ****/
5845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
59e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chutypedef struct
6045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu{
6145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUTIMER_TIME period;
6245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUTIMER_TYPE type;
6345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu} tUTIMER_CFG;
6445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
6545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
6645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Timer feature types ****/
6745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_ID_1          0
6845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_ID_2          1
6945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_ID_3          2
7045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_ID_4          3
7145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_TYPE_PERIODIC 4
7245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UTIMER_FEAT_TYPE_ONESHOT  5
7345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
7445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUTIMER_FEATURE;
7545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
7645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
7745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Callback for timer expiration ****/
7845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef void (tUTIMER_CBACK)(tUTIMER_ID);
7945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
8045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
8145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/*******************************************************************************
8245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function Prototypes
8345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu*******************************************************************************/
8445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#ifdef __cplusplus
8545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chuextern "C" {
8645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#endif
8745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
8845faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuUDRV_API extern void    UTIMER_Init(void *);
8945faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuUDRV_API extern void    UTIMER_Start(tUTIMER_ID, tUTIMER_CFG *, tUTIMER_CBACK *);
9045faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuUDRV_API extern void    UTIMER_Read(tUTIMER_ID, tUTIMER_TIME *);
9145faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuUDRV_API extern void    UTIMER_Stop(tUTIMER_ID);
9245faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuUDRV_API extern BOOLEAN UTIMER_Feature(tUTIMER_FEATURE);
9345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
9445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#ifdef __cplusplus
9545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu}
9645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#endif
9745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
9845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#endif /* UTIMER_H */
99