WWTimer.c 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /*****************************************************************************/
  2. /* ここから */
  3. /*****************************************************************************/
  4. #include "WWTimerP.h"
  5. #include "WonX.h"
  6. /*****************************************************************************/
  7. /* メンバ関数の定義 */
  8. /*****************************************************************************/
  9. int WWTimer_ON( WWTimer ww_timer) { return (ww_timer->timer_on = 1); }
  10. int WWTimer_OFF( WWTimer ww_timer) { return (ww_timer->timer_on = 0); }
  11. int WWTimer_IsON( WWTimer ww_timer) { return (ww_timer->timer_on != 0); }
  12. int WWTimer_IsOFF(WWTimer ww_timer) { return (ww_timer->timer_on == 0); }
  13. int WWTimer_GetAutoPreset(WWTimer ww_timer)
  14. { return (ww_timer->auto_preset); }
  15. int WWTimer_GetPresetCounter(WWTimer ww_timer)
  16. { return (ww_timer->preset_counter); }
  17. int WWTimer_GetCounter(WWTimer ww_timer)
  18. { return (ww_timer->counter); }
  19. int WWTimer_IsAutoPresetOFF(WWTimer ww_timer)
  20. { return (WWTimer_GetAutoPreset(ww_timer) == 0); }
  21. int WWTimer_IsAutoPresetON(WWTimer ww_timer)
  22. { return (WWTimer_GetAutoPreset(ww_timer) == 1); }
  23. int WWTimer_SetAutoPreset(WWTimer ww_timer, int auto_preset)
  24. { return (ww_timer->auto_preset = auto_preset); }
  25. int WWTimer_SetPresetCounter(WWTimer ww_timer, int preset_counter)
  26. { return (ww_timer->preset_counter = preset_counter); }
  27. int WWTimer_SetCounter(WWTimer ww_timer, int counter)
  28. { return (ww_timer->counter = counter); }
  29. int WWTimer_SetAutoPresetOFF(WWTimer ww_timer)
  30. { return (WWTimer_SetAutoPreset(ww_timer, 0)); }
  31. int WWTimer_SetAutoPresetON(WWTimer ww_timer)
  32. { return (WWTimer_SetAutoPreset(ww_timer, 1)); }
  33. int WWTimer_Reset(WWTimer ww_timer)
  34. {
  35. int counter;
  36. counter = WWTimer_GetCounter(ww_timer);
  37. WWTimer_SetCounter(ww_timer, WWTimer_GetPresetCounter(ww_timer));
  38. return (counter);
  39. }
  40. int WWTimer_Count(WWTimer ww_timer)
  41. {
  42. int ret;
  43. int counter;
  44. if (WWTimer_IsOFF(ww_timer)) return (0);
  45. counter = WWTimer_GetCounter(ww_timer);
  46. counter--;
  47. if (counter <= 0) {
  48. ret = 1;
  49. if (WWTimer_IsAutoPresetON(ww_timer))
  50. WWTimer_Reset(ww_timer);
  51. else
  52. WWTimer_OFF(ww_timer);
  53. } else {
  54. ret = 0;
  55. WWTimer_SetCounter(ww_timer, counter);
  56. }
  57. return (ret);
  58. }
  59. /*---------------------------------------------------------------------------*/
  60. /* オブジェクトの作成 */
  61. /*---------------------------------------------------------------------------*/
  62. WWTimer WWTimer_Create(int auto_preset, int preset)
  63. {
  64. WWTimer ww_timer;
  65. ww_timer = (WWTimer)malloc(sizeof(_WWTimer));
  66. if (ww_timer == NULL)
  67. WonX_Error("WWTimer_Create", "Cannot allocate memory.");
  68. WWTimer_OFF(ww_timer);
  69. WWTimer_SetAutoPreset(ww_timer, auto_preset);
  70. WWTimer_SetPresetCounter(ww_timer, preset);
  71. WWTimer_Reset(ww_timer);
  72. return (ww_timer);
  73. }
  74. /*---------------------------------------------------------------------------*/
  75. /* オブジェクトの削除 */
  76. /*---------------------------------------------------------------------------*/
  77. WWTimer WWTimer_Destroy(WWTimer ww_timer)
  78. {
  79. if (ww_timer == NULL)
  80. WonX_Error("WWTimer_Destroy", "Object is not created.");
  81. WWTimer_OFF(ww_timer);
  82. free(ww_timer);
  83. return (NULL);
  84. }
  85. /*****************************************************************************/
  86. /* ここまで */
  87. /*****************************************************************************/
  88. /*****************************************************************************/
  89. /* End of File. */
  90. /*****************************************************************************/