/* TimerTest.c */ #include "DHL_OSAL.h" #include "DHL_Timer.h" //#include #define TIMER_TEST_PRIO (TASK_PRI_DMW_TIMER -1) #define TIMER_TEST_STKSZ 8192 void TestHandler1(UINT32 nIDTimer, UINT32 param) { DHL_OS_Printf("**** timer call, id 0x%x(%d), arg %u\n", nIDTimer, nIDTimer, param); } /* Shell> Å×½ºÆ® ¼ø¼­. DHL_SYS_ShowTimer // ¾Æ¹« Á¤º¸ ¾øÀ½. DHL_SYS_StartTimer 1, 2000, TestHandler1, 33, 1 // Çѹø Ãâ·Â Çϰí Á¾·á. DHL_SYS_StartTimer 1, 2000, TestHandler1, 33, 0 // °è¼Ó Ãâ·Â. DHL_SYS_ShowTimer // 1¹ø timer Ç¥½Ã. DHL_SYS_StartTimer 2, 5000, TestHandler1, 77, 0 DHL_SYS_ShowTimer // 1, 2¹ø timer Ç¥½Ã. // 1, 2¹ø ¸ðµÎ ¸Þ½ÃÁö Ç¥½Ã È®ÀÎ.. DHL_SYS_KillTimer 1 // 1¹ø ¸Þ½ÃÁö ¾È³ª¿È. DHL_SYS_ShowTimer // 2¹ø timer Ç¥½Ã. DHL_SYS_KillTimer 8 // 8¹ø ŸÀ̸Ӵ ¾øÀ½.. ¿¡·¯ °ªÀÌ ¸®ÅϵǾî¾ß ÇÔ. ¿¡·¯ ¸Þ½ÃÁö´Â ¾È³ª¿Ã ¼ö ÀÖÀ½. ---- Timer entry overflow ---- DHL_SYS_ShowTimer // ÃÖ´ë timer entry °¹¼ö È®ÀÎ. DHL_SYS_StartTimer 11 10000 TestHandler1 DHL_SYS_StartTimer 12 10000 TestHandler1 DHL_SYS_StartTimer 13 10000 TestHandler1 DHL_SYS_StartTimer 14 10000 TestHandler1 DHL_SYS_StartTimer 15 10000 TestHandler1 DHL_SYS_StartTimer 16 10000 TestHandler1 DHL_SYS_StartTimer 17 10000 TestHandler1 <- ¿¡·¯¸Þ½ÃÁö Ç¥½Ã.. DHL_SYS_StartTimer 15 2000 TestHandler1 DHL_SYS_StartTimer 15 2000 TestHandler1 °°Àº ŸÀ̸Ӵ ¿©·¯¹ø start ÇØµµ update °¡ µÇ°í ¿¡·¯°¡ ¾Æ´Ô. À§ 15¹ø ŸÀ̸Ӹ¦ 2ÃÊ ³»¿¡ °è¼Ó update Çϸé timeout ¸Þ½ÃÁö´Â º¸ÀÌÁö ¾Ê¾Æ¾ß ÇÔ. */ /* ------------ version 2 timer --------------- */ DHL_TMHANDLE g_test_timer; void TestHandler2(UINT32 nIDTimer, UINT32 *params) { DHL_OS_Printf("^^^^ timer call, id 0x%x(%d), arg %d %d %d %d\n", nIDTimer, nIDTimer, params[0], params[1], params[2], params[3]); } DHL_RESULT TimerTest_Init(void) { DHL_TIMER_INIT_PARAM param; DHL_RESULT dhr = DHL_OK; //dhl_timer_module_init(); if (g_test_timer) { goto label_end; // dhl timer already initialized. } memset(¶m, 0, sizeof(DHL_TIMER_INIT_PARAM)); param.max_timer_entry = 4; param.name = "TMRTEST"; param.task_priority = TIMER_TEST_PRIO; param.stack_size = TIMER_TEST_STKSZ; param.use_mutex_lock = 0; // we should support ISR!! param.num_user_param = 4; //param.msg_que_size = xxx; // ±âÁ¸ µ¿ÀÛ ¸ðµå ȣȯ¼º üũ¸¦ À§ÇØ ÀϺη¯ ºüÆ®¸². dhr = DHL_TIMER_Initialize(¶m, &g_test_timer); label_end: DHL_OS_Printf("timer handle %x\n", g_test_timer); DHL_OS_Printf("use 'set g_Trace_TimerHandle 0x%x' to trace timer..\n", g_test_timer); return dhr; } DHL_RESULT TimerTest_Start(UINT32 nIdTimer, UINT32 nPeriodMs, int mode, UINT32 param0, UINT32 param1, UINT32 param2, UINT32 param3) { UINT32 params[4]; params[0] = param0; params[1] = param1; params[2] = param2; params[3] = param3; return DHL_TIMER_StartEx(g_test_timer, nIdTimer, nPeriodMs, TestHandler2, 4, params, mode == 1 ? eTIMER_FLAG_OneShot : mode == 2 ? eTIMER_FLAG_NowAndContinue : eTIMER_FLAG_Continue); } DHL_RESULT TimerTest_Stop(UINT32 nIdTimer) { return DHL_TIMER_Stop(g_test_timer, nIdTimer); } void TimerTest_Show(void) { DHL_TIMER_Show(g_test_timer); } /* Shell> Å×½ºÆ® ¼ø¼­. TimerTest_Init TimerTest_Show // ¾Æ¹« Á¤º¸ ¾øÀ½. TimerTest_Start 1, 1000, 1, 11, 22, 33, 44 // Çѹø Ãâ·Â Çϰí Á¾·á. TimerTest_Start 1, 1000, 0, 11, 22, 33, 44 // 1ÃÊ ÈĺÎÅÍ °è¼Ó Ãâ·Â. TimerTest_Start 1, 1000, 2, 11, 22, 33, 44 // Çѹø Ãâ·Â Çϰí 1ÃÊ ¸¶´Ù °è¼Ó Ãâ·Â. TimerTest_Show // 1¹ø timer Ç¥½Ã. TimerTest_Start 2, 5000, 0, 55, 66, 77, 88 TimerTest_Show // 1, 2¹ø timer Ç¥½Ã. // 1, 2¹ø ¸ðµÎ ¸Þ½ÃÁö Ç¥½Ã È®ÀÎ.. TimerTest_Stop 1 // 1¹ø ¸Þ½ÃÁö ¾È³ª¿È. TimerTest_Show // 2¹ø timer Ç¥½Ã. TimerTest_Stop 8 // 8¹ø ŸÀ̸Ӵ ¾øÀ½.. ¿¡·¯ °ªÀÌ ¸®ÅϵǾî¾ß ÇÔ. ¿¡·¯ ¸Þ½ÃÁö´Â ¾È³ª¿Ã ¼ö ÀÖÀ½. TimerTest_Start 99, 0, 1, 0x11 0x22 0x33 0x44 // dpc test ---- ¿¡·¯ üũ TimerTest_Start 0xfff9, 2000, 0, 0 // range error TimerTest_Start 99, 0, 0, 0 // too short period ---- Timer entry overflow ---- TimerTest_Show // ÃÖ´ë timer entry °¹¼ö È®ÀÎ. TimerTest_Start 11 10000 TestHandler2 TimerTest_Start 12 10000 TestHandler2 TimerTest_Start 13 10000 TestHandler2 TimerTest_Start 14 10000 TestHandler2 TimerTest_Start 15 10000 TestHandler2 <- ¿¡·¯¸Þ½ÃÁö Ç¥½Ã.. TimerTest_Start 15 2000 TestHandler1 TimerTest_Start 15 2000 TestHandler1 °°Àº ŸÀ̸Ӵ ¿©·¯¹ø start ÇØµµ update °¡ µÇ°í ¿¡·¯°¡ ¾Æ´Ô. À§ 15¹ø ŸÀ̸Ӹ¦ 2ÃÊ ³»¿¡ °è¼Ó update Çϸé timeout ¸Þ½ÃÁö´Â º¸ÀÌÁö ¾Ê¾Æ¾ß ÇÔ. */ void Timer_Test(void) { DHL_SYS_ShowTimer(); }