kb_machblue_core_timer.c
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:3k
源码类别:

DVD

开发平台:

C/C++

  1. //*****************************************************************************
  2. //File Name: kb_machblue_core_timer.c
  3. //
  4. //Description: timer function
  5. //
  6. // used by Machblue to access the platform's timer 
  7. //
  8. //Author: steven
  9. //
  10. //Date:  2006.12.29
  11. //
  12. //Version:  v1.0
  13. //*****************************************************************************
  14. #include "timer.h"
  15. #include "machblue_defines.h"
  16. #include "machblue_porting_core.h"
  17. static UINT32  mbTimer=KB_TIMER_INVALID_ID;
  18. static BOOL  mbTimerInit=FALSE;
  19. /**
  20.  * init the machblue timer
  21.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  22.  */
  23. mb_error_t mb_timer_init(void)
  24. {
  25. if(mbTimerInit)
  26. return MB_SUCCESS;
  27. mbTimer=KB_TimerCreate(KB_TIMER_REPEAT,NULL,NULL);
  28. if(mbTimer==KB_TIMER_INVALID_ID)
  29. {
  30. mb_printf("n[Machblue]:Timer create error.");
  31. return MB_FAILURE;
  32. }
  33. mbTimerInit=TRUE;
  34. return MB_SUCCESS;
  35. }
  36. /**
  37.  * delete the machblue timer
  38.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  39.  */
  40. mb_error_t mb_timer_delete(void)
  41. {
  42. INT32 ret;
  43. if(mbTimerInit==FALSE)
  44. return MB_SUCCESS;
  45. ret=KB_TimerDel(mbTimer);
  46. if(ret!=RETOK)
  47. {
  48. mb_printf("n[Machblue]:Timer delete error.");
  49. return MB_FAILURE;
  50. }
  51. mbTimerInit=FALSE;
  52. return MB_SUCCESS;
  53. }
  54. /**
  55.  * Sets Machblue's timer. The timer callback function should be invoked when
  56.  * the specified delay expires. Machblue will only schedule one timer at a time.
  57.  * delay < timer delay in milliseconds >
  58.  * callback_f < timer callback function >
  59.  * cb_client_data  < timer callback function client data >
  60.  
  61.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  62.  */
  63. mb_error_t mb_timer_set(long delay,mb_timer_callback_f *callback_f,void *cb_client_data)
  64. {
  65. T_TIMER_st *timer;
  66. INT32 ret;
  67. if(mbTimer==KB_TIMER_INVALID_ID)
  68. {
  69. mb_printf("n[Machblue]:Timer set invalid.");
  70. return MB_FAILURE;
  71. }
  72. //the lib call delay time maybe 0
  73. if(delay<=0)
  74. delay=1;
  75. timer=(T_TIMER_st *)mbTimer;
  76. timer->entry=(KB_TIMER_FUNC_POINTER)callback_f;
  77. timer->param=cb_client_data;
  78. ret=KB_TimerEnable(mbTimer,delay);
  79. if(ret!=RETOK)
  80. {
  81. mb_printf("n[Machblue]:Timer set error.");
  82. return MB_FAILURE;
  83. }
  84. return MB_SUCCESS;
  85. }
  86. /**
  87.  * Cancels Machblue's timer request.
  88.  * This function cancels Machblue's timer request.
  89.  */
  90. mb_error_t mb_timer_cancel(void)
  91. {
  92. INT32 ret;
  93. if(mbTimer==KB_TIMER_INVALID_ID)
  94. {
  95. mb_printf("n[Machblue]:Timer cancel invalid.");
  96. return MB_FAILURE;
  97. }
  98. ret=KB_TimerDisable(mbTimer);
  99. if(ret!=RETOK)
  100. {
  101. mb_printf("n[Machblue]:Timer cancel error.");
  102. return MB_FAILURE;
  103. }
  104. return MB_SUCCESS;
  105. }