blob: 9f1039c13da63757afbb35710d5f173a161331bb (
plain)
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
/*
* Copyright (C) 2017-2024 Alibaba Group Holding Limited
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/******************************************************************************
* @file drv/timer.h
* @brief Header File for TIMER Driver
* @version V1.0
* @date 9. Oct 2020
* @model timer
******************************************************************************/
#ifndef _DRV_TIMER_H_
#define _DRV_TIMER_H_
#include <drv/common.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct csi_timer csi_timer_t;
struct csi_timer {
csi_dev_t dev;
void (*callback)(csi_timer_t *timer, void *arg);
void *arg;
void *priv;
};
/**
\brief Initialize TIMER interface. initializes the resources needed for the TIMER interface
\param[in] timer Handle to operate
\param[in] idx TIMER index
\return Error code \ref csi_error_t
*/
csi_error_t csi_timer_init(csi_timer_t *timer, uint32_t idx);
/**
\brief De-initialize TIMER interface. stops operation and releases the software resources used by the interface
\param[in] timer Handle to operate
\return None
*/
void csi_timer_uninit(csi_timer_t *timer);
/**
\brief Start TIMER
\param[in] timer Handle to operate
\param[in] timeout_us The timeout for TIMER
\return Error code \ref csi_error_t
*/
csi_error_t csi_timer_start(csi_timer_t *timer, uint32_t timeout_us);
/**
\brief Stop TIMER
\param[in] timer Handle to operate
\return None
*/
void csi_timer_stop(csi_timer_t *timer);
/**
\brief Get TIMER remaining value
\param[in] timer Handle to operate
\return remaining value
*/
uint32_t csi_timer_get_remaining_value(csi_timer_t *timer);
/**
\brief Get TIMER load value
\param[in] timer Handle to operate
\return Load value
*/
uint32_t csi_timer_get_load_value(csi_timer_t *timer);
/**
\brief Check TIMER is running
\param[in] timer Handle to operate
\return
true - TIMER is running
false - TIMER is stopped
*/
bool csi_timer_is_running(csi_timer_t *timer);
/**
\brief Attach the callback handler to TIMER
\param[in] timer Operate handle
\param[in] callback Callback function
\param[in] arg Callback's param
\return Error code \ref csi_error_t
*/
csi_error_t csi_timer_attach_callback(csi_timer_t *timer, void *callback, void *arg);
/**
\brief Detach the callback handler
\param[in] timer Operate handle
\return None
*/
void csi_timer_detach_callback(csi_timer_t *timer);
/**
\brief Enable TIMER power manage
\param[in] timer Handle to operate
\return Error code \ref csi_error_t
*/
csi_error_t csi_timer_enable_pm(csi_timer_t *timer);
/**
\brief Disable TIMER power manage
\param[in] timer Handle to operate
\return None
*/
void csi_timer_disable_pm(csi_timer_t *timer);
#ifdef __cplusplus
}
#endif
#endif /* _DRV_TIMER_H_ */
|