source: svn/newcon3bcm2_21bu/dst/dlib/src/osx/OSX_Task.h @ 76

Last change on this file since 76 was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 7.6 KB
Line 
1/**
2        @file
3                OSX_Task.h
4       
5        @brief
6                OSAL ±â¹ÝÀÇ ¹ü¿ë ŽºÅ© API
7               
8        ¹ü¿ëÀ¸·Î »ç¿ë °¡´ÉÇÑ Å½ºÅ© Skeleton
9
10        Copyright 2006~2010 Digital STREAM Technology, Inc.
11        All Rights Reserved
12*/
13
14
15#ifndef __OSX_TASK_H__
16#define __OSX_TASK_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 OSX_Task.h
35
36        - °³³ä °ü·Ã ³»¿ëÀº ±¸±Û ¹®¼­ Âü°í.
37                - ¹®¼­ À̸§:
38                - URL
39
40        - module overview
41       
42        - dependencies
43                - OSAL (Task, Tick, MsgQ, ...)
44
45        ŸÀÌ¹Ö Á¤È®µµ´Â OSALÀÇ Tick Á¤È®µµ¿¡ µû¸¥´Ù.
46        ¾ÆÁÖ Á¤È®ÇÑ °èÃø ¿ëÀ¸·Î´Â ÀûÀýÇÏÁö ¾ÊÀ» ¼ö ÀÖÀ½.
47       
48*/
49
50
51#if COMMENT
52____Config____(){}
53#endif
54
55
56/*
57        OSX Task Á¤º¸¸¦ À§ÇÑ ¿µ¿ªÀº ¹Ì¸® °íÁ¤µÈ Å©±â·Î ÇÒ´çÇØ ³õ´Â´Ù.
58*/
59#ifndef OSX_MAX_TASK
60        #define OSX_MAX_TASK 32
61#endif
62
63
64
65/*
66        task command proc ¿¡¼­ »ç¿ëÇÒ argumentÀÇ ÃÖ´ë °¹¼ö.
67        ÀÌ °ªÀº ¿ÜºÎ¿¡¼­ override °¡´ÉÇÏ´Ù.
68*/
69
70#ifndef OSX_MAX_USER_PARAMS
71        #define OSX_MAX_USER_PARAMS 4
72#endif
73
74#if OSX_MAX_USER_PARAMS > 8
75        #error too many user params
76#endif
77
78
79
80#if COMMENT
81____Types____(){}
82#endif
83
84
85/**
86        @brief OSX ŽºÅ© ÇÚµé.
87
88        OSX_TaskStart ½ÇÇà °á°ú·Î ¸®ÅϵǴ °ªÀÌ´Ù.
89*/
90typedef UINT32 H_OSX_TASK;
91
92
93/** @brief command id ŸÀÔ.
94        ÀÏ¹Ý ¼ýÀÚ °ªÀÌ´Ù.
95
96        ÀÌ ¿µ¿ª Áß¿¡¼­ »ç¿ëÀÚ°¡ »ç¿ëÇÒ ¼ö ¾ø´Â ¿¹¾à ¿µ¿ªÀÌ ÀÖ´Ù.
97        - cmd id 0Àº »ç¿ë ºÒ°¡.
98        - cmd id°¡ OSX_CMD_RESERVED ÀÌ»óÀÇ °ª »ç¿ë ºÒ°¡.
99*/
100typedef UINT8  T_OSX_TASK_CMD;
101
102
103/**
104        @brief ŽºÅ© »ý¼º ÆÄ¶ó¹ÌÅÍ.
105        OSX_TaskStart ÀÇ ÀÎÀÚ·Î ÇÊ¿äÇÔ.
106
107        µðÆúÆ® °ªÀº OSX_TaskGetDefaultInitSetting API·Î ¾òÀ» ¼ö ÀÖÀ¸³ª
108        °¡´ÉÇÏ¸é °¢°¢ ÁöÁ¤ÇØ ÁÖ´Â °ÍÀÌ ±ÇÀåµÊ.
109*/
110typedef struct 
111{
112        char *name; 
113                ///< ÀÌ Å½ºÆ® À̸§. ÃÖ´ë 8ÀÚ.
114                /**
115                        this will be copied into internal DB.
116                        so local stack space can be used for name.
117                */
118       
119        int max_scheduled_cmd;
120                ///< ÀÌ Å½ºÅ©¿¡¼­ µ¿½Ã¿¡ Áö¿øÇÏ´Â ¿¹¾à ¸í·É¾î ÃÖ´ë °¹¼ö. 0º¸´Ù Ä¿¾ß ÇÔ.
121       
122        int priority; 
123                ///< ŽºÅ©ÀÇ ¿ì¼± ¼øÀ§.
124        int stack_size;
125                ///< ŽºÅ©ÀÇ ½ºÅà ũ±â.
126       
127        int num_cmd_param;
128                ///< command ÀÎÀÚ·Î ¸î °³°¡ ÇÊ¿äÇÑÁö.
129                ///< 0À» ÁöÁ¤Çϸé 1·Î ÀÚµ¿ ¼³Á¤µÈ´Ù.
130
131        int msg_que_size;
132                ///< task message queueÀÇ Å©±â.
133                ///< 0À» ÁöÁ¤ÇÏ¸é µðÆúÆ® 20À¸·Î Àç¼³Á¤µÊ.
134
135               
136} S_OSX_TASK_INIT_SETTING;
137
138
139/** @brief command proc.
140
141        OSX_TaskSendCmd ¿¡¼­ »ç¿ëµÈ´Ù.
142
143        param °¡º¯ ÀÎÀÚÀÇ ½ÇÁ¦ °¹¼ö´Â ÀÌ prototype ¿¡¼­´Â ¾Ë ¼ö¾ø´Ù.
144        task start ÇÒ ¶§ ÁöÁ¤ÇÑ °¹¼ö ¸¸Å­ »ç¿ë °¡´ÉÇÏ´Ù.
145*/
146typedef void (*F_OSX_TASK_PROC)(T_OSX_TASK_CMD nIdCmd, UINT32 param, ...);
147
148
149/** @brief
150        OSX_TaskScheduleCmd ³»ºÎ¿¡¼­ ÁöÁ¤ÇÏ´Â flagµé.
151
152        ½ÇÇà ¸ðµå °ü·ÃÇØ¼­´Â
153*/
154typedef enum
155{
156        /** Áï½Ã ½ÇÇà ¿É¼Ç. °¡Àå ÀϹÝÀûÀÎ ¿É¼Ç. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ÀÌ ¸ðµå·Î µ¿ÀÛ.
157        */
158        eTASK_FLAG_Normal = 0x0,
159       
160        /** Áö¿¬ ½ÇÇà ¿É¼Ç. ¹Ù·Î ½ÇÇàÇÏÁö ¾Ê°í ÁöÁ¤ÇÑ delay¸¸Å­ ±â´Ù¸° ÈÄ¿¡ ½ÇÇà.
161        */
162        eTASK_FLAG_Delayed = 0x1,
163
164        /** ¹Ýº¹ ½ÇÇà ¿É¼Ç. interval (ÁÖ±â)¿¡ ¸ÂÃç ¹Ýº¹ ½ÇÇà.
165        */
166        eTASK_FLAG_Repeat = 0x2,
167       
168
169        /** °¢Á¾ ÆÄ»ý ¸ðµåµé
170        */
171        eTASK_FLAG_WaitAndRepeat = (eTASK_FLAG_Delayed | eTASK_FLAG_Repeat),
172        eTASK_FLAG_NowAndRepeat = (eTASK_FLAG_Normal | eTASK_FLAG_Repeat),
173
174        /* ¸ðµç °æ¿ìÀÇ ¼ö:
175                                call
176                ------------------------------------------> time
177                Normal          Action
178                Delayed                   Action
179                WaitAndRepeat             Action    Action    Action ...
180                NowAndRepeat    Action    Action    Action    Action ...
181                                |<-delay->|<-delay->|<-delay->|<-delay->|
182        */
183
184} E_OSX_TASK_CMD_FLAGS;
185
186
187/** @brief taskÀÇ °£´ÜÇÑ Á¤º¸
188        OSX_TaskGetInfo API ¿¡¼­ »ç¿ë.
189*/
190typedef struct
191{
192        DHL_OS_TASK_ID tid;
193
194} S_OSX_TASK_INFO;
195
196
197
198
199#if COMMENT
200____Defines____(){}
201#endif
202
203
204/*
205        cmd id Áß¿¡¼­ ¿¹¾à µÈ ºÎºÐ. ÀÌ °ª ÀÌ»óÀº »ç¿ë ±ÝÁöÀÓ.
206*/
207#define OSX_CMD_RESERVED 0xf0
208
209
210
211
212#if COMMENT
213____LowLevel_API____(){}
214#endif
215
216/** @brief ŽºÅ©¿¡¼­ ¸í·ÉÀ» Á÷Á¢ ½ÇÇàÇϵµ·Ï Çϰųª, ¿¹¾à ÇÑ´Ù.
217
218        nDelayMs°¡ 0ÀÌ¸é ¹Ù·Î ½ÇÇàµÇ¸ç, 0º¸´Ù Å©¸é ÁöÁ¤ ½Ã°£ ¸¸Å­ Áö¿¬µÇ¾ú´Ù°¡ ½ÇÇàµÈ´Ù.
219
220        - ¹Ýº¹ ½ÇÇà
221                - ÁÖ±âÀûÀ¸·Î °è¼Ó ¸í·ÉÀÌ ¹Ýº¹ ½ÇÇàµÈ´Ù.
222                - ¹Ýº¹ ½ÇÇà µ¿ÀÛÀ» ÁßÁö½ÃŰ·Á¸é ¹Ýµå½Ã Stop API¸¦ È£ÃâÇØÁà¾ß ÇÑ´Ù.
223        - 1ȸ ½ÇÇà (Á÷Á¢ ½ÇÇà ¶Ç´Â ¿¹¾à ½ÇÇà)
224                - ÁöÁ¤ ½Ã°£ °æ°ú ÈÄ 1ȸ¸¸ callbackÀÌ È£ÃâµÈ´Ù.
225                - º°µµ·Î stop API¸¦ È£ÃâÇØ ÁÖÁö ¾Ê¾Æµµ µÈ´Ù.
226       
227        @param[in] handle   Å½ºÅ© ÇÚµé. OSX_TaskStart ·Î ¸¸µé¾îÁø °ÍÀ̾î¾ß ÇÑ´Ù.
228        @param[in] nIdCmd   ¸í·É id
229        @param[in] nDelayMs ¹Ð¸®ÃÊ ´ÜÀ§ÀÇ ½Ã°£.
230                        0ÀÌ¸é ¹Ù·Î ½ÇÇà. 0º¸´Ù Å©°í eTASK_FLAG_Delayed Ç÷¡±×°¡ ÀÖÀ¸¸é Áö¿¬ ½ÇÇà.
231        @param[in] flags        E_OSX_TASK_CMD_FLAGS Ç÷¡±×.
232        @param[in] func     ¸í·É ½ÇÇà½Ã È£ÃâµÉ Äݹé ÇÔ¼ö.
233        @param[in] param    Äݹé ÇÔ¼ö·Î bypass Àü´Þ µÇ´Â »ç¿ëÀÚ ÆÄ¶ó¹ÌÅÍ va list.
234*/
235DHL_RESULT OSX_TaskRegisterCmdV(H_OSX_TASK handle, T_OSX_TASK_CMD nIdCmd, UINT32 nDelayMs, 
236                                                UINT16 flags, F_OSX_TASK_PROC func, va_list param);
237
238
239/** @brief ŽºÅ©¿¡¼­ Áï½Ã ¸í·É ½ÇÇà.
240
241        @param[in] handle   Å½ºÅ© ÇÚµé. OSX_TaskStart ·Î ¸¸µé¾îÁø °ÍÀ̾î¾ß ÇÑ´Ù.
242        @param[in] nIdCmd   ¸í·É id
243        @param[in] flags        E_OSX_TASK_CMD_FLAGS Ç÷¡±×. Áö¿¬/¹Ýº¹ ±â´ÉÀÇ flag´Â ¹«½ÃµÊ.
244        @param[in] func     ¸í·É ½ÇÇà½Ã È£ÃâµÉ Äݹé ÇÔ¼ö.
245        @param[in] param    Äݹé ÇÔ¼ö·Î bypass Àü´Þ µÇ´Â »ç¿ëÀÚ ÆÄ¶ó¹ÌÅÍ va list.
246                ¸î°³ÀÇ paramÀÌ ÇÊ¿äÇÑÁö´Â Start ÇÒ ¶§ init setting¿¡¼­ ÁöÁ¤.
247*/
248DHL_RESULT OSX_TaskRunCmd(H_OSX_TASK handle, T_OSX_TASK_CMD nIdCmd,
249                                                UINT16 flags, F_OSX_TASK_PROC func, ...);
250
251/** @brief ŽºÅ©¿¡¼­ Áö¿¬/¹Ýº¹ ¸í·É ½ÇÇà.
252
253        @param[in] handle   Å½ºÅ© ÇÚµé. OSX_TaskStart ·Î ¸¸µé¾îÁø °ÍÀ̾î¾ß ÇÑ´Ù.
254        @param[in] nIdCmd   ¸í·É id
255        @param[in] nDelayMs ¹Ð¸®ÃÊ ´ÜÀ§ÀÇ ½Ã°£.
256                        0ÀÌ¸é ¹Ù·Î ½ÇÇà. 0º¸´Ù Å©°í eTASK_FLAG_Delayed Ç÷¡±×°¡ ÀÖÀ¸¸é Áö¿¬ ½ÇÇà.       
257        @param[in] flags        E_OSX_TASK_CMD_FLAGS Ç÷¡±×.
258        @param[in] func     ¸í·É ½ÇÇà½Ã È£ÃâµÉ Äݹé ÇÔ¼ö.
259        @param[in] param    Äݹé ÇÔ¼ö·Î bypass Àü´Þ µÇ´Â »ç¿ëÀÚ ÆÄ¶ó¹ÌÅÍ va list.
260                ¸î°³ÀÇ paramÀÌ ÇÊ¿äÇÑÁö´Â Start ÇÒ ¶§ init setting¿¡¼­ ÁöÁ¤.
261*/
262DHL_RESULT OSX_TaskScheduleCmd(H_OSX_TASK handle, T_OSX_TASK_CMD nIdCmd, UINT32 nDelayMs, 
263                                                UINT16 flags, F_OSX_TASK_PROC func, ...);
264
265/** @brief ¿¹¾à µÇ¾î ÀÖ´Â ´ë±â ¸í·É °­Á¦ Á¾·á.
266
267        ¹Ýº¹, Áö¿¬ ¸í·ÉÀÇ °æ¿ì¿¡¸¸ È¿°ú°¡ ÀÖ´Ù.
268       
269        @param[in] handle   Å½ºÅ© ÇÚµé. OSX_TaskStart ·Î ¸¸µé¾îÁø´Ù.
270        @param[in] nIdCmd   Á¤Áö ½Ãų ¸í·É
271*/
272DHL_RESULT OSX_TaskStopCmd(H_OSX_TASK handle, T_OSX_TASK_CMD nIdCmd);
273
274/** @brief Low-level ŸÀÌ¸Ó Å½ºÅ© µ¿±âÈ­.
275
276        ¸ðµç ¸í·É ½ÇÇà APIµéÀÌ ºñµ¿±âÀûÀ¸·Î ¼öÇàµÇ´Âµ¥, ÀÌ API¸¦ ÀÌ¿ëÇÏ¿© µ¿±âÈ­ °¡´É.
277        task¿¡¼­ ÀÌ ¸í·ÉÀ» ÀνÄÇϰí ack¸¦ º¸³¾ ¶§ ±îÁö blocking µÈ´Ù.
278       
279        @param[in] handle   Å½ºÅ© ÇÚµé. OSX_TaskStart ·Î ¸¸µé¾îÁø´Ù.
280        @return
281*/
282DHL_RESULT OSX_TaskSync(H_OSX_TASK handle);
283
284
285/** @brief ŽºÅ© ³»ºÎ Á¤º¸ ÄÜ¼Ö Ãâ·Â.
286
287        ÁöÁ¤ÇÑ Å½ºÅ©ÀÇ Á¤º¸¸¦ µð¹ö±× Äֿܼ¡ Ãâ·ÂÇÑ´Ù.
288        DHL_OS_Printf ¸¦ ÀÌ¿ëÇÏ¿© Ãâ·ÂµÈ´Ù.
289        NULLÀ» ÁöÁ¤Çϸé Àüü osx ŽºÅ© Á¤º¸¸¦ Ãâ·ÂÇÑ´Ù.
290
291        @param[in] handle ŽºÅ© ÇÚµé
292*/
293void OSX_TaskShow(H_OSX_TASK handle);
294
295
296
297/** @brief ŽºÅ© ÇÚµé Á¤º¸, ³»ºÎ »óÅ Á¤º¸ query
298
299*/
300void OSX_TaskGetInfo(H_OSX_TASK handle, S_OSX_TASK_INFO *pinfo);
301
302
303
304/** @brief ŽºÅ© »ý¼º.
305
306        @param[in]  setting  ŽºÅ© ¼Ó¼º.
307        @param[out] pHandle  »ý¼ºµÈ ŽºÅ© ÇÚµé.
308        @return
309*/
310DHL_RESULT OSX_TaskStart(S_OSX_TASK_INIT_SETTING *setting, H_OSX_TASK *pHandle);
311
312/** @brief ŽºÅ© Á¾·á
313
314        ±×·ì ³»¿¡¼­ ÇöÀç µ¿ÀÛ ÁßÀÎ ¸ðµç ŸÀ̸Ӱ¡ ¿ÏÀü Á¾·á µÈ ÈÄ¿¡ »èÁ¦µÈ´Ù.
315       
316        - ÇöÀç callback ½ÇÇà ÁßÀÎ ¸í·ÉÀº ¿Ï·á ÈÄ Á¾·á.
317        - µî·Ï µÇ¾î ÀÖ°í callback Áغñ ÁßÀÎ ¸í·ÉÀº ±×³É cancel.
318
319        @param[in] handle  ŽºÅ© ÇÚµé
320
321*/
322void OSX_TaskShutdown(H_OSX_TASK handle);
323
324
325/** @brief ŽºÅ© »ý¼º ÆÄ¶ó¹ÌÅÍÀÇ µðÆúÆ® °ª ȹµæ.
326
327        @param[out]  setting µðÆúÆ® ¼Ó¼º.
328*/
329void OSX_TaskGetDefaultInitSetting(S_OSX_TASK_INIT_SETTING *setting);
330
331
332
333#ifdef __cplusplus
334} /* extern "C" */
335#endif
336
337
338
339#endif  /* __OSX_TASK_H__ */
340
Note: See TracBrowser for help on using the repository browser.