al_scheduler.h 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. /*****************************************************************************
  2. ** al_event.h: AL Layer Scheduler Header File
  3. **
  4. ** Description: Gives the functionalities for schedule different mode of events
  5. **
  6. ** Copyright(c) 2011 Sunmedia Technologies - All Rights Reserved
  7. **
  8. ** Author : wuliang
  9. **
  10. ** $Id: al_scheduler.h 1910 2011-01-24 05:05:35Z anlzhao_c1 $
  11. *****************************************************************************/
  12. #ifndef __AL_SCHEDULER_H__
  13. #define __AL_SCHEDULER_H__
  14. #ifdef __cplusplus
  15. extern "C"{
  16. #endif
  17. #define AL_SCH_MAX_NO_OF_CALLBACK (3)
  18. #define AL_SCH_MAX_NO_OF_SCHD_EVENT (30)
  19. #define AL_SCH_INVALID_ID (0xffffffff)
  20. typedef al_uint32 AL_SCH_sched_id_t;
  21. typedef al_uint32 AL_SCH_time_t;
  22. typedef enum _tag_AISCH_event_type_t{
  23. /* these are schedule types*/
  24. AL_SCH_TYPE_SINGLE = 0, /* Event is single shot */
  25. AL_SCH_TYPE_REPEAT = (1 << 0), /* Event to be reschedule for snooze time*/
  26. AL_SCH_TYPE_MULTI_EVENT = (1 << 1), /* Event has sub event as reminder */
  27. AL_SCH_TYPE_MASK = (AL_SCH_TYPE_REPEAT | AL_SCH_TYPE_SINGLE | AL_SCH_TYPE_MULTI_EVENT),
  28. /*these are event types*/
  29. AL_SCH_TYPE_PRG_SCH = (1<<2), /* Program for a service is scheduled */
  30. AL_SCH_TYPE_SRV_SCH = (2<<2), /* Service for given time scheduled */
  31. AL_SCH_TYPE_PRG_EXPIRE_SCH = (3<<2), /* General Event time FW has no action */
  32. AL_SCH_TYPE_SLEEP = (4<<2), /* Sleep timer Event */
  33. AL_SCH_TYPE_TIME_SCH = (5<<2), /* System Time Event */
  34. AL_SCH_TYPE_EVENT_EXPR = (6<<2), /* Channel Navigation event for Event expiration*/
  35. AL_SCH_TYPE_LOCK_AFTER = (7<<2), /* Lock-after schedule event*/
  36. AL_SCH_TYPE_MAX = (8<<2)
  37. } AL_SCH_event_type_t;
  38. typedef enum _tag_AL_SH_sleep_time_t{
  39. AL_SCH_SLEEP_OFF = 0,
  40. AL_SCH_SLEEP_10_MIN = 10 * 60,
  41. AL_SCH_SLEEP_15_MIN = 15 * 60,
  42. AL_SCH_SLEEP_20_MIN = 20 * 60,
  43. AL_SCH_SLEEP_30_MIN = 30 * 60,
  44. AL_SCH_SLEEP_45_MIN = 45 * 60,
  45. AL_SCH_SLEEP_60_MIN = 60 * 60,
  46. AL_SCH_SLEEP_90_MIN = 90 * 60,
  47. AL_SCH_SLEEP_120_MIN = 120 * 60
  48. } AL_SCH_sleep_time_t;
  49. typedef struct{
  50. AL_SCH_event_type_t sch_event;
  51. AL_SCH_time_t sch_time;
  52. AL_SCH_time_t sch_snooze;
  53. al_uint32 sch_user_para;
  54. AL_SCH_time_t app_schd_time[AL_SCH_MAX_NO_OF_CALLBACK];
  55. } AL_SCH_details_t;
  56. typedef void (*AL_SCH_EVENT_CALLBACK)(AL_SCH_event_type_t sch_event,
  57. AL_SCH_sched_id_t sch_id, AL_SCH_details_t *sch_detail);
  58. /************************************************************************
  59. ** name :ACSH_init()
  60. **
  61. ** description : Scheduler COMPONENT INIT
  62. **
  63. ** input parameters : NONE
  64. **
  65. ** output parameters : None
  66. **
  67. ** return type : AL_Return_t SUCCESS or FAILURE
  68. ************************************************************************/
  69. AL_Return_t AL_SCH_Init(AL_SCH_EVENT_CALLBACK sch_call_back);
  70. /************************************************************************
  71. ** name :AL_SCH_Terminate()
  72. **
  73. ** description : Scheduler COMPONENT Terminate
  74. **
  75. ** input parameters : NONE
  76. **
  77. ** output parameters : None
  78. **
  79. ** return type : AL_Return_t SUCCESS or FAILURE
  80. ************************************************************************/
  81. AL_Return_t AL_SCH_Terminate(void);
  82. /************************************************************************
  83. ** name :AL_SCH_Handle_Time_Change()
  84. **
  85. ** description : Again check the schedule list and get the next event.
  86. **
  87. ** input parameters : NONE
  88. **
  89. ** output parameters : None
  90. **
  91. ** return type : AL_Return_t SUCCESS or FAILURE
  92. ************************************************************************/
  93. AL_Return_t AL_SCH_Handle_Time_Change( al_uint32 prev_time );
  94. /************************************************************************
  95. ** name :AL_SCH_ScheduleEvent()
  96. **
  97. ** description : Schedules the given event at given time
  98. **
  99. ** input parameters : sch_detail: details structure
  100. ** sch_call_bck: Callback function required. If this is passed as NULL
  101. ** framework callback function is passed.
  102. **
  103. ** output parameters : sch_id: Return the scheduled event id.
  104. **
  105. ** return type : AL_Return_t SUCCESS or FAILURE
  106. ************************************************************************/
  107. AL_Return_t AL_SCH_ScheduleEvent( AL_SCH_details_t *sch_detail, AL_SCH_sched_id_t *sch_id,
  108. AL_SCH_EVENT_CALLBACK sch_call_bck);
  109. /************************************************************************
  110. ** name :AL_SCH_ReScheduleEvent()
  111. **
  112. ** description : Reschedules the event
  113. **
  114. ** input parameters : sch_id: Schedule ID to be reschedule
  115. ** sch_details: New details applicable.
  116. **
  117. ** output parameters : None
  118. **
  119. ** return type : AL_Return_t SUCCESS or FAILURE
  120. ************************************************************************/
  121. AL_Return_t AL_SCH_ReScheduleEvent(AL_SCH_sched_id_t *sch_id, AL_SCH_details_t *sch_details);
  122. /************************************************************************
  123. ** name :AL_SCH_UnScheduleEvent()
  124. **
  125. ** description : Unschedules the event
  126. **
  127. ** input parameters : AL_SCH_sched_id_t *sch_id (Pointer to schedule ID);
  128. **
  129. ** output parameters : None
  130. **
  131. ** return type : AL_Return_t SUCCESS or FAILURE
  132. ************************************************************************/
  133. AL_Return_t AL_SCH_UnScheduleEvent(AL_SCH_sched_id_t *sch_id);
  134. /************************************************************************
  135. ** name :AL_SCH_GetScheduleDetails()
  136. **
  137. ** description : Gives the details of given schedule id
  138. **
  139. ** input parameters : AL_SCH_sched_id_t *sch_id , AL_SCH_details_t *sch_details(pointer)
  140. **
  141. ** output parameters : AL_SCH_details_t *sch_details (details r populated)
  142. **
  143. ** return type : AL_Return_t SUCCESS or FAILURE
  144. ************************************************************************/
  145. AL_Return_t AL_SCH_GetScheduleDetails(AL_SCH_sched_id_t *sch_id, AL_SCH_details_t *sch_details);
  146. /************************************************************************
  147. ** name :AL_SCH_Get_ScheduleTimeRemaining
  148. **
  149. ** description : Gives the details of given schedule id
  150. **
  151. ** input parameters : AL_SCH_sched_id_t *sch_id , AL_SCH_details_t *sch_details(pointer)
  152. **
  153. ** output parameters : AL_SCH_details_t *sch_details (details r populated)
  154. **
  155. ** return type : AL_Return_t SUCCESS or FAILURE
  156. ************************************************************************/
  157. AL_Return_t AL_SCH_Get_ScheduleTimeRemaining(AL_SCH_sched_id_t *sch_id, AL_SCH_time_t *sch_time);
  158. /************************************************************************
  159. ** name :ACSH_set_default_settings()
  160. **
  161. ** description : this API is called during master reset;empties the sch_list;
  162. **
  163. ** input parameters : none
  164. **
  165. ** output parameters : none
  166. **
  167. ** return type : AL_SUCCESS / AL_FAILURE
  168. ************************************************************************/
  169. AL_Return_t AL_SCH_SetDefaultSettings(void);
  170. #ifdef __cplusplus
  171. }
  172. #endif /* __cplusplus */
  173. #endif