source: svn/newcon3bcm2_21bu/dst/dmw/src/System/DMW_Timer.c @ 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: 6.4 KB
Line 
1/*******************************************************************
2*       DMW_Timer.c
3*
4*       Copyright 2003 Digital STREAM Technology, Inc.
5*       All Rights Reserved
6*
7*       $Id: DMW_Timer.c,v 1.10 2003/04/01 cafrii Exp $
8*
9 ********************************************************************/
10
11
12#include "DMW_Platform.h"
13
14#include "DHL_OSAL_Config.h"
15#include "DHL_Timer.h" 
16
17#include "DMW_Timer.h"
18#include "DMW_Mutex.h"
19
20//#include <string.h>
21
22
23DHL_MODULE("$tmr", 0);
24
25/*********************************************************************
26 
27  General Variables for Timer M/W
28
29*********************************************************************/
30
31#define DMW_TIMER_TEST 1
32
33
34
35
36#if COMMENT
37______DMW_Timer____(){}
38#endif
39
40
41DHL_TMHANDLE g_dmw_timer;
42
43
44static STATUS dhlresult2status(DHL_RESULT dhlResult)
45{
46        if (dhlResult == DHL_OK)
47                return statusOK;
48        else if (dhlResult == DHL_FAIL_INVALID_PARAM)
49                return statusInvalidArgument;
50        else if (dhlResult == DHL_FAIL_NOT_INITIALIZED)
51                return statusNotInitialized;
52        else if (dhlResult == DHL_FAIL_NOT_FOUND)
53                return statusNotFound;
54        else if (dhlResult == DHL_FAIL_INVALID_STATE)
55                return statusInvalidState;
56        else
57                return statusError;
58}
59
60void DMW_SYS_TimerInit(void)
61{
62//      DHL_RESULT dhlResult;
63        DHL_TIMER_INIT_PARAM param;
64
65        if (g_dmw_timer) {
66                dprint(0, "!! dmw timer already init\n");
67                return; /* dmw timer already initialized. */
68        }
69       
70        memset(&param, 0, sizeof(DHL_TIMER_INIT_PARAM));
71       
72        param.max_timer_entry = DMW_MAX_TIMER;
73        param.name = "DMWTMR";
74        param.task_priority = TASK_PRI_DMW_TIMER;
75        param.stack_size = EXTTIMEOUT_TASK_STACKSIZE;
76        param.use_mutex_lock = 0; /* we should support ISR!! */
77       
78        DHL_TIMER_Initialize(&param, &g_dmw_timer);
79        //dhlResult = DHL_TIMER_Initialize(&param, &g_dmw_timer);
80
81        /* return dhlresult2status(dhlResult); */
82}
83
84void DMW_SYS_TimerTerminate()
85{
86        DHL_TIMER_Terminate(g_dmw_timer);
87}
88
89// zooyouny 100630 : »ç¿ë µÇ´Â °÷ÀÌ ¾øÀ½, ÀÏ´Ü ÁÖ¼® ó¸®
90STATUS DMW_SYS_GetStartTimeofTimer(UINT32 nIdTimer, UINT32 *pnStartTime)
91{
92        DHL_RESULT dhlResult = DHL_OK;
93        // dhlResult = dhl_timer_get_start_tick(g_dmw_timer, nIdTimer, pnStartTime);
94
95        return dhlresult2status(dhlResult);
96}
97
98STATUS DMW_SYS_SetTimer(UINT32 nIdTimer,UINT32 nPeriodMs, DMW_TIMER_PROC func, UINT32 param, BOOL bOneShot)
99{
100        DHL_RESULT dhlResult;
101        dhlResult = DHL_TIMER_Start(g_dmw_timer, nIdTimer, nPeriodMs, func, param, bOneShot);
102
103        return dhlresult2status(dhlResult);
104
105}
106
107STATUS DMW_SYS_KillTimer(UINT32 nIdTimer)
108{
109        DHL_RESULT dhlResult;
110        dhlResult = DHL_TIMER_Stop(g_dmw_timer, nIdTimer);
111       
112        return dhlresult2status(dhlResult);
113}
114
115void DMW_SYS_PrintTimer(void)
116{
117        DHL_TIMER_Show(g_dmw_timer);
118}
119
120
121
122
123#if COMMENT
124____Counter____(){}
125#endif
126
127
128/*---------------------
129        Generic Counter
130
131
132        cafrii 050728 add
133*/
134
135
136void DMW_ResetCounter(DMW_Counter *pCounter)
137{
138        pCounter->bHoldState = FALSE;
139        pCounter->nHoldPeriod = DHL_OS_GetMsCount();
140}
141
142UINT32 DMW_GetTickCount(DMW_Counter *pCounter)
143{
144        if (pCounter->bHoldState)
145                return pCounter->tickHoldStart - pCounter->nHoldPeriod;
146               
147        return DHL_OS_GetMsCount() - pCounter->nHoldPeriod;
148}
149
150void DMW_HoldCounter(DMW_Counter *pCounter)
151{
152        if (pCounter->bHoldState) {
153                dprint(0, "!! counter already hold state\n");
154                return;  /**/ 
155        }
156        pCounter->tickHoldStart = DHL_OS_GetMsCount();
157        pCounter->bHoldState = TRUE;
158}
159
160void DMW_ResumeCounter(DMW_Counter *pCounter)
161{
162        if (pCounter->bHoldState == 0) {
163                dprint(0, "!! counter already running\n");
164                return;
165        }
166        pCounter->nHoldPeriod += (DHL_OS_GetMsCount() - pCounter->tickHoldStart);
167        pCounter->bHoldState = FALSE;
168}
169
170/* cafrii 060814 add */
171BOOL DMW_GetCounterHoldState(DMW_Counter *pCounter)
172{
173        return pCounter->bHoldState ? TRUE : FALSE;
174}
175
176
177
178
179
180#if COMMENT
181______TEST____(){}
182#endif
183
184
185#if DMW_TIMER_TEST
186
187
188void TestTimerProc(int id, int param)
189{
190        DHL_OS_Printf("@@@@ timer proc: id %d, param %d\n\n", id, param);
191}
192
193/*
194        test:
195                DMW_SYS_SetTimer 9100 1000 TestTimerProc 1 0
196                DMW_SYS_SetTimer 9200 1300 TestTimerProc 2 0
197
198                DMW_SYS_SetTimer 9300 7000 TestTimerProc 555 1
199
200                DMW_SYS_PrintTimer
201                DMW_SYS_KillTimer 9100
202*/
203
204
205
206DMW_Counter g_cnt;
207
208void TestCounter()
209{
210        /*      ÀÌ ÇÔ¼ö¸¦ ½ÇÇàÇϸé tick ¿Ã¶ó°¡´Â °ÍÀÌ Ãâ·ÂµÊ.
211                À̶§ ¾Æ·¡ cnthold, cntresume µîÀ» ÀÔ·ÂÇØ¼­ hold/resume ÀÌ µÇ´ÂÁö È®ÀÎ.
212
213                Shell ÀÌ background run À» Áö¿øÇØ¾ß ÇÑ´Ù.
214                CB2 HAL ¿¡¼­´Â &¸¦ ºÙÀÌ¸é °¡´ÉÇÔ..
215               
216                Shell> TestCounter &
217        */
218       
219        int i;
220        DMW_ResetCounter(&g_cnt);
221       
222        for (i=0; i<240; i++) /* 60 second, 1 minute. */
223        {
224                DHL_OS_Printf("time %u\n", DMW_GetTickCount(&g_cnt)/1000);
225               
226                DHL_OS_Delay(250);
227        }
228}
229
230void cnthold()
231{
232        DMW_HoldCounter(&g_cnt);
233}
234
235void cntresume()
236{
237        DMW_ResumeCounter(&g_cnt);
238}
239
240
241void myTimerTestFunc(UINT32 nIDTimer, UINT32 param)
242{
243        DHL_OS_Printf("My address: 0x%x,  ID: %d (0x%x), param: %d (0x%x)\n", 
244                (int)myTimerTestFunc, nIDTimer, nIDTimer, param, param);
245}
246
247/*
248                // timerID, elapse, func, param, oneshot
249
250        DMW_SYS_SetTimer 1000, 2000, myTimerTestFunc, 3, 1
251        DMW_SYS_SetTimer 1001, 500, myTimerTestFunc, 777, 0
252
253        DMW_SYS_KillTimer 1000
254
255        DMW_SYS_PrintTimer
256
257*/
258
259
260
261#endif /* DMW_TIMER_TEST */
262
263
264
265
266#if COMMENT
267______DebugSymbol____(){}
268#endif
269
270
271
272
273
274#if DMW_REGISTER_DEBUG_SYMBOL
275
276static DHL_SymbolTable TimerSymbols[] =
277{
278        /*---- functions */
279        DHL_FNC_SYM_ENTRY(DMW_SYS_PrintTimer),
280        /* DHL_FNC_SYM_ENTRY(DMW_SYS_KillTimer), */
281       
282        /*---- variables */
283        /* DHL_VAR_SYM_ENTRY(g_Trace_bTimerDebugPrint), */
284       
285};
286
287#endif /* DMW_REGISTER_DEBUG_SYMBOL */
288
289
290void DMW_SYS_RegisterTimerSymbols()
291{
292#if DMW_REGISTER_DEBUG_SYMBOL
293        DHL_DBG_RegisterSymbols(TimerSymbols, DHL_NUMSYMBOLS(TimerSymbols));
294       
295#endif
296}
297
298
299
300
301
302/********************************************************************
303        $Log: DMW_Timer.c,v $
304        # History
305       
306        1.12 2004/7/23  add timer shutdown code.. not fully tested.
307        1.11 2004/6/18  remove sys time codes completely..
308                        GetStartTimeofTimer statusNotFound ¿¡·¯°ª Ãß°¡
309        1.10 2003/10/22 PCE only version: System Timer¿Í General Timer¸¦ ±¸ºÐÇØ¼­ Àû¿ë. ÀÌ ÆÄÀÏÀº General Timer¸¸ °ü¸®.
310        1.02 2003/04/09 modify some function and add a few function for supporting
311                        daylight saving,timezone feature and sync. by user defined time(mightwar)
312        1.00 2003/01/?? first design,
313
314*********************************************************************/
Note: See TracBrowser for help on using the repository browser.