source: svn/trunk/newcon3bcm2_21bu/dst/dhl/api/include/DHL_Timer.h

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 8.0 KB
Line 
1/**
2        @file
3                DHL_Timer.h
4       
5        @brief
6                OSAL ±â¹ÝÀÇ ¹ü¿ë ŸÀÌ¸Ó API
7               
8        ¹ü¿ëÀ¸·Î »ç¿ë °¡´ÉÇÑ ±¸°£ ŸÀ̸Ó.
9
10        Copyright 2006~2010 Digital STREAM Technology, Inc.
11        All Rights Reserved
12*/
13
14
15#ifndef __DHL_TIMER_API_H__
16#define __DHL_TIMER_API_H__
17
18
19#include "DHL_OSAL.h"
20
21
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27
28
29#if COMMENT
30____Overview____(){}
31#endif
32
33/**
34        @file DHL_Timer.h
35
36        - °³³ä °ü·Ã ³»¿ëÀº ±¸±Û ¹®¼­ Âü°í.
37                - ¹®¼­ À̸§: DHL API ¸Å´º¾ó
38                - URL http://docs.google.com/View?docid=0AQZYAjzYyTl_ZGdmcWJ4eDZfMjFjajZ6aGc0OA
39
40        - module overview
41                - ŸÀ̸Ó: ŸÀÌ¸Ó ¾ÆÀ̵ð
42                - ŸÀÌ¸Ó À̺¥Æ®: ÁöÁ¤ ½Ã°£ °æ°ú ÈÄ callbackÀÌ ºÒ¸®´Â Çö»óÀ» ¸»ÇÔ.
43                - ŸÀÌ¸Ó ±×·ì: ÇÑ Å½ºÅ©¿¡¼­ °°ÀÌ Ã³¸®µÇ´Â ŸÀ̸ӵéÀÇ ÁýÇÕ.
44       
45        - dependencies
46                - OSAL (Task, Tick, MsgQ, ...)
47
48        ŸÀÌ¹Ö Á¤È®µµ´Â OSALÀÇ Tick Á¤È®µµ¿¡ µû¸¥´Ù.
49        ¾ÆÁÖ Á¤È®ÇÑ °èÃø ¿ëÀ¸·Î´Â ÀûÀýÇÏÁö ¾ÊÀ» ¼ö ÀÖÀ½.
50       
51*/
52
53
54#if COMMENT
55____Config____(){}
56#endif
57
58/*
59        ŸÀÌ¸Ó °ü·Ã ³»¿ë Áß¿¡¼­
60        platform dependent ÇÑ ³»¿ëµéÀº ¾Æ·¡ º°µµÀÇ ÆÄÀÏ
61
62        ¾Æ·¡ ÆÄÀÏÀº ¹Ýµå½Ã platform Çì´õ Æú´õ¿¡¼­ Á¦°øµÇ¾î¾ß ÇÑ´Ù.
63
64        ÇÊ¿äÇÑ ³»¿ëµé:
65                DHL_TIMER_MAX_ENTRY
66                DHL_TIMER_TASK_PRIORITY
67                DHL_TIMER_TASK_STKSIZE
68
69                ±×¸®°í °¢ Timer ID °ªµé.
70*/
71
72#include "DHL_Timer_Config.h"
73
74
75
76
77#if COMMENT
78____Types____(){}
79#endif
80
81
82/**
83        @brief ŸÀÌ¸Ó ±×·ì ÇÚµé.
84
85        DHL_TIMER_Initialize ½ÇÇà °á°ú·Î ¸®ÅϵǴ °ªÀÌ´Ù.
86       
87        µ¿ÀÏ ±×·ì¿¡ ¼ÓÇÑ Å¸ÀÌ¸Ó IDµéÀº °°Àº ŽºÅ©¿¡¼­ ¼­ºñ½ºµÈ´Ù.
88        µû¶ó¼­ ŸÀÌ¸Ó ¼º°Ý¿¡ µû¶ó ÇÊ¿äÇÑ ¸¸Å­ÀÇ Å½ºÅ©¸¦ ¸¸µé¾î »ç¿ëÇØ¾ß ÇÑ´Ù.
89*/
90typedef void *DHL_TMHANDLE;
91
92
93/**
94        @brief ŸÀÌ¸Ó ±×·ì »ý¼º ÆÄ¶ó¹ÌÅÍ.
95        DHL_TIMER_Initialize ÀÇ ÀÎÀÚ·Î ÇÊ¿äÇÔ.
96
97*/
98typedef struct 
99{
100        char *name; 
101                ///< ÀÌ Å¸ÀÌ¸Ó ±×·ìÀÇ À̸§. ÃÖ´ë 8ÀÚ.
102                /**
103                        this will be copied into timer record DB.
104                        so local stack space can be used for name.
105                */
106       
107        int max_timer_entry;
108                ///< ÀÌ ±×·ì¿¡¼­ ÃÖ´ë·Î Áö¿øÇϴ ŸÀÌ¸Ó °¹¼ö. 0º¸´Ù Ä¿¾ß ÇÔ.
109       
110        int task_priority; 
111                ///< ŸÀÌ¸Ó Å½ºÅ©ÀÇ ¿ì¼± ¼øÀ§.
112        int stack_size;
113                ///< ŸÀÌ¸Ó Å½ºÅ©ÀÇ ½ºÅà ũ±â.
114       
115        BOOL use_mutex_lock;
116                ///< º¸È£¿¡ mutex¸¦ »ç¿ëÇÒ °ÍÀÎÁö ¿©ºÎ.
117                /**
118                        - if true, mutex is used for access timer record.
119                        - if false, interrupt is temporarily disabled during timer record access.
120               
121                        if you want to use timer in ISR, set this FALSE.
122                */
123
124        //--------- version 2 extension -------------
125        // if set to 0, it should be compatible to version 1 operation.
126
127        int num_user_param;
128                ///< »ç¿ëÀÚ ÆÄ¶ó¹ÌÅÍ·Î ¸î °³°¡ ÇÊ¿äÇÑÁö.
129                ///< ±âÁ¸¿¡´Â ÇϳªÀÇ »ç¿ëÀÚ ÆÄ¶ó¹ÌÅ͸¸ Á¦°øÇÏ¿´À¸³ª, ÀÓÀÇ °¹¼ö·Î È®Àå ÇÒ ¼ö ÀÖµµ·Ï ÇÔ.
130                ///< 0À» ÁöÁ¤Çϸé 1·Î ÀÚµ¿ ¼³Á¤µÈ´Ù.
131
132        int msg_que_size;
133                ///< timer task message queueÀÇ Å©±â.
134                ///< ±âÁ¸¿¡´Â ¼Ò½º Äڵ忡 20 À¸·Î fix µÇ¾î ÀÖ¾úÀ½.
135                ///< 0À» ÁöÁ¤ÇÏ¸é µðÆúÆ® 20À¸·Î Àç¼³Á¤µÊ.
136
137               
138} DHL_TIMER_INIT_PARAM;
139
140
141/**
142        @brief »ç¿ëÀÚ Å¸ÀÌ¸Ó callback ŸÀÔ.
143       
144        DHL_TIMER_Start ¹× DHL_SYS_StartTimer ¿¡¼­ »ç¿ëµÈ´Ù.
145
146        »ç¿ëÀÚ´Â ¾Æ·¡¿Í µ¿ÀÏÇÑ prototypeÀÇ callback ÇÔ¼ö¸¦ Á¦°øÇØ¾ß ÇÑ´Ù.
147*/
148typedef void (*DHL_TIMER_PROC)(UINT32 nIDTimer, UINT32 param);  // »ç¿ëÀÚ Å¸ÀÌ¸Ó Çڵ鷯
149
150/**
151        @brief version 2ÀÇ Å¸ÀÌ¸Ó callback ŸÀÔ.
152
153        DHL_TIMER_StartEx ¿¡¼­ »ç¿ëµÈ´Ù.
154
155        param ¹è¿­ÀÇ ½ÇÁ¦ element °¹¼ö´Â ÀÌ prototype ¿¡¼­´Â ¾Ë ¼ö¾ø´Ù.
156        timer init ÇÒ ¶§ ÁöÁ¤ÇÑ °¹¼ö ¸¸Å­ »ç¿ë °¡´ÉÇÏ´Ù.
157*/
158typedef void (*DHL_TIMER_PROC_EX)(UINT32 nIDTimer, UINT32 *params);     // »ç¿ëÀÚ Å¸ÀÌ¸Ó Çڵ鷯
159
160
161/**
162        DHL_TIMER_StartEx ¿¡¼­ ÁöÁ¤ÇÏ´Â flagµé.
163*/
164typedef enum
165{
166        /**
167                continuous mode
168        */
169        eTIMER_FLAG_Continue = 0x0,
170       
171        /**
172                one shot mode
173        */
174        eTIMER_FLAG_OneShot = 0x1,
175
176        /**
177                one shot ÀÌ ¾Æ´Ñ °æ¿ì¿¡¸¸ Àǹ̰¡ ÀÖÀ¸¸ç,
178                Áö±Ý ¹Ù·Î 1ȸ¸¦ ¼öÇàÇÑ ÈÄ¿¡ ÁöÁ¤µÈ ½Ã°£ ÀÌÈÄ interval timer¸¦ ±âµ¿ÇÑ´Ù.
179        */
180        eTIMER_FLAG_NowAndContinue = 0x2,
181
182        /**
183                ³»ºÎ¿ëµµ·Î »ç¿ëµÇ¾î ¿¹¾à.
184        */
185        eTIMER_FLAG_Reserved = 0xC0,
186
187} DHL_TIMER_FLAGS;
188
189
190
191#if COMMENT
192____Defines____(){}
193#endif
194
195
196
197
198
199#if COMMENT
200____LowLevel_API____(){}
201#endif
202
203/**
204        @brief Low-level ŸÀ̸Ӹ¦ µî·ÏÇÑ´Ù.
205
206        timer Çϳª¸¦ µî·ÏÇÑ´Ù. ÀÌÈÄ ÀÏÁ¤ ½Ã°£ÀÌ Áö³ª¸é timer callbackÀÌ È£ÃâµÈ´Ù.
207
208        ŸÀ̸ÓÀÇ ¼¼ºÎ µ¿ÀÛÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
209
210        - ÀÎÅ͹ú ŸÀ̸Ó
211                - ÁÖ±âÀûÀ¸·Î °è¼Ó ŸÀÌ¸Ó callbackÀÌ È£ÃâµÈ´Ù.
212                - ŸÀÌ¸Ó µ¿ÀÛÀ» ÁßÁö½ÃŰ·Á¸é ¹Ýµå½Ã Stop API¸¦ È£ÃâÇØÁà¾ß ÇÑ´Ù.
213        - ¿ø¼¦ ŸÀ̸Ó
214                - ÁöÁ¤ ½Ã°£ °æ°ú ÈÄ 1ȸ¸¸ callbackÀÌ È£ÃâµÈ´Ù.
215                - º°µµ·Î ŸÀÌ¸Ó cancel API¸¦ È£ÃâÇØ ÁÖÁö ¾Ê¾Æµµ µÈ´Ù.
216       
217        @param[in] handle
218                        ŸÀÌ¸Ó ±×·ì ÇÚµé.
219                        DHL_TIMER_Initialize ·Î ¸¸µé¾îÁø °ÍÀ̾î¾ß ÇÑ´Ù.
220        @param[in] nIdTimer   
221                        ŸÀÌ¸Ó ID.
222                        ÀÌ ±×·ì ³»¿¡¼­ ÀÌ Å¸À̸Ӹ¦ ´ëÇ¥ÇÒ ¼ö ÀÖ´Â Áߺ¹µÇÁö ¾Ê´Â id °ª.
223        @param[in] nPeriodMs
224                        ¹Ð¸®ÃÊ ´ÜÀ§ÀÇ ÁÖ±â.
225        @param[in] func
226                        ŸÀ̹ö À̺¥Æ® ¹ß»ý ½Ã È£ÃâµÉ Äݹé ÇÔ¼ö.
227        @param[in] param
228                        Äݹé ÇÔ¼ö·Î bypass Àü´Þ µÇ´Â »ç¿ëÀÚ ÆÄ¶ó¹ÌÅÍ.
229        @param[in] bOneShot
230                        TRUE À̸é ÁöÁ¤µÈ ½Ã°£ °æ°ú ÈÄ 1ȸ¸¸ È£Ã⠵Ǵ ¿ø¼¦ ŸÀ̸ӷΠµ¿ÀÛ.
231                        FALSE À̸é ÁÖ±âÀûÀ¸·Î È£ÃâµÇ´Â ÀÎÅ͹ú ŸÀ̸ӷΠµ¿ÀÛ.
232        @return
233
234*/
235DHL_RESULT DHL_TIMER_Start(DHL_TMHANDLE handle, UINT32 nIdTimer, UINT32 nPeriodMs, 
236                                                DHL_TIMER_PROC func, UINT32 param, BOOL bOneShot);
237
238
239/**
240        @brief DHL_TIMER_Start APIÀÇ È®Àå.
241
242        paramÀº UINT32 °ª¿¡¼­ UINT32 array pointer·Î º¯°æ µÇ¾úÀ½.
243        OneShot ¸ðµå ¿Ü¿¡ ´Ù¾çÇÑ ¸ðµå¸¦ Áö¿øÇϱâ À§ÇØ flag·Î º¯°æ.
244
245        @param[in] params
246                        »ç¿ëÀÚ ÆÄ¶ó¹ÌÅ͵éÀÇ ¹è¿­ Æ÷ÀÎÅÍ.
247                        ¸î °³ÀÇ ÆÄ¶ó¹ÌÅͰ¡ »ç¿ë °¡´ÉÇÑÁö´Â Initialize ÇÒ ¶§ °áÁ¤µÈ´Ù.
248       
249        @param[in] flags
250                        DHL_TIMER_FLAGS Ç÷¡±× Áß¿¡ Çϳª.
251*/
252DHL_RESULT DHL_TIMER_StartEx(DHL_TMHANDLE handle, UINT32 nIdTimer, UINT32 nPeriodMs, 
253                                                DHL_TIMER_PROC_EX func, int numParam, UINT32 *params, UINT16 flags);
254
255/**
256        @brief Low-level ŸÀÌ¸Ó µî·Ï ÇØÁ¦
257
258        ÁöÁ¤ ±×·ì¿¡¼­ timer id¸¦ Á¦°ÅÇÑ´Ù. ´õ ÀÌ»ó ÇØ´ç ŸÀ̸Ӵ ȣÃâµÇÁö ¾Ê´Â´Ù.
259       
260        ¿ø¼¦ ŸÀ̸ÓÀÇ °æ¿ì º°µµ·Î ŸÀÌ¸Ó cancel API¸¦ È£ÃâÇØ ÁÖÁö ¾Ê¾Æµµ µÈ´Ù.
261
262
263        @param[in] handle   Å¸ÀÌ¸Ó ±×·ì ÇÚµé. DHL_TIMER_Initialize ·Î ¸¸µé¾îÁø´Ù.
264        @param[in] nIdTimer Á¤Áö ½Ãų ŸÀÌ¸Ó ID
265        @return
266*/
267DHL_RESULT DHL_TIMER_Stop(DHL_TMHANDLE handle, UINT32 nIdTimer);
268
269/**
270        @brief Low-level ŸÀÌ¸Ó Å½ºÅ© µ¿±âÈ­.
271
272        ŸÀÌ¸Ó Å½ºÅ©¿Í È£Ãâ ŽºÅ©°£ÀÇ µ¿±â¸¦ ¸ÂÃá´Ù.
273        ÀÌ ÇÔ¼ö´Â Å»ýÀûÀ¸·Î blocking mode·Î µ¿ÀÛÇÑ´Ù.
274
275        @param[in] handle   Å¸ÀÌ¸Ó ±×·ì ÇÚµé. DHL_TIMER_Initialize ·Î ¸¸µé¾îÁø´Ù.
276        @return
277*/
278DHL_RESULT DHL_TIMER_Sync(DHL_TMHANDLE handle);
279
280/**
281        @brief Low-level ŸÀÌ¸Ó Á¤º¸ Ãâ·Â.
282
283        ÁöÁ¤ÇÑ Å¸ÀÌ¸Ó ±×·ìÀÇ Á¤º¸¸¦ µð¹ö±× Äֿܼ¡ Ãâ·ÂÇÑ´Ù.
284        DHL_OS_Printf ¸¦ ÀÌ¿ëÇÏ¿© Ãâ·ÂµÈ´Ù.
285
286        @param[in] handle ŸÀÌ¸Ó ±×·ì ÇÚµé
287*/
288void       DHL_TIMER_Show(DHL_TMHANDLE handle);
289
290/**
291        @brief Low-level ŸÀÌ¸Ó Å½ºÅ© »ý¼º (±×·ì ÃʱâÈ­)
292
293        timer moduleÀ» ÃʱâÈ­ ÇÑ´Ù.
294
295               
296        @param[in]  param
297                ŸÀÌ¸Ó ±×·ì ¼Ó¼º.
298        @param[out] pHandle
299                »ý¼ºµÈ ŸÀÌ¸Ó ±×·ì ÇÚµé.
300
301        @return
302
303*/
304DHL_RESULT DHL_TIMER_Initialize(DHL_TIMER_INIT_PARAM *param, DHL_TMHANDLE *pHandle);
305
306/**
307        @brief Low-level ŸÀÌ¸Ó Å½ºÅ© Á¦°Å (±×·ì »èÁ¦)
308
309        ±×·ì ³»¿¡¼­ ÇöÀç µ¿ÀÛ ÁßÀÎ ¸ðµç ŸÀ̸Ӱ¡ ¿ÏÀü Á¾·á µÈ ÈÄ¿¡ »èÁ¦µÈ´Ù.
310       
311        - ÇöÀç À̺¥Æ®°¡ ¹ß»ýµÇ¾î ó¸® ÁßÀΠŸÀ̸Ӵ À̺¥Æ® ó¸® ÈÄ Á¾·á.
312        - µî·Ï µÇ¾î ÀÖ°í callback Áغñ ÁßÀΠŸÀ̸Ӵ ±×³É cancel.
313
314        @param[in] handle ŸÀÌ¸Ó ±×·ì ÇÚµé
315
316*/
317void       DHL_TIMER_Terminate(DHL_TMHANDLE handle);
318
319
320
321
322#if COMMENT
323____HighLevel_API____(){}
324#endif
325
326
327
328
329/**
330        @brief High-level ŸÀÌ¸Ó id Çϳª¸¦ ½ÃÀÛÇÑ´Ù.
331
332        DHL_SYS_TimerInit ¿¡¼­ µðÆúÆ®·Î »ý¼ºµÈ ŸÀÌ¸Ó ±×·ì¿¡ Ãß°¡µÈ´Ù.
333       
334        °¢ ÀÎÀÚ ¹× ¸®ÅϰªÀÇ Àǹ̴ DHL_TIMER_Start ¿Í µ¿ÀÏÇÏ´Ù.
335       
336*/
337DHL_RESULT DHL_SYS_StartTimer(UINT32 nIdTimer, UINT32 nPeriodMs, 
338                                                DHL_TIMER_PROC func, UINT32 param, BOOL bOneShot);
339
340/**
341        @brief High-level ŸÀÌ¸Ó id Çϳª¸¦ Á¾·áÇÑ´Ù.
342
343        DHL_SYS_TimerInit ¿¡¼­ µðÆúÆ®·Î »ý¼ºµÈ ŸÀÌ¸Ó ±×·ì¿¡¼­ Á¦°ÅµÈ´Ù.
344       
345        °¢ ÀÎÀÚ ¹× ¸®ÅϰªÀÇ Àǹ̴ DHL_TIMER_Stop °ú µ¿ÀÏÇÏ´Ù.
346
347*/
348DHL_RESULT DHL_SYS_KillTimer(UINT32 nIdTimer);
349
350/**
351        @brief High-level ŸÀÌ¸Ó Á¤º¸ Ãâ·Â.
352       
353        DHL_SYS_TimerInit ¿¡¼­ µðÆúÆ®·Î »ý¼ºµÈ ŸÀÌ¸Ó ±×·ì¿¡ ´ëÇÑ Á¤º¸´Ù.
354
355*/
356void       DHL_SYS_ShowTimer(void);
357
358/**
359        @brief High-level ŸÀÌ¸Ó ¸ðµâ ÃʱâÈ­
360
361        µðÆúÆ® priority, µðÆúÆ® stack size µîÀº
362        ÀϺΠDHL_TimerConfig.h ³»¿ëÀ» Âü°íÇÏ¿© »ý¼ºµÈ´Ù.
363*/
364DHL_RESULT DHL_SYS_TimerInit(void);
365
366
367
368#ifdef __cplusplus
369} /* extern "C" */
370#endif
371
372
373
374#endif  /* __DHL_TIMER_API_H__ */
375
Note: See TracBrowser for help on using the repository browser.