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

DVD

开发平台:

C/C++

  1. //*****************************************************************************
  2. //File Name: kb_machblue_tv_event.c
  3. //
  4. //Description: event function
  5. //
  6. // used by Machblue to retrieve event information from an event objects
  7. //
  8. //Author: wisco & steven
  9. //
  10. //Date:  2007.01.20
  11. //
  12. //Version:  v1.0
  13. //*****************************************************************************
  14. #include "machblue_defines.h"
  15. #include "machblue_porting_core.h"
  16. #include "machblue_tv_defines.h"
  17. #include "machblue_tv_customer.h"
  18. #include "kb_machblue_client_data.h"
  19. #include "kb_machblue_client_define.h"
  20. /**
  21.  * This function releases an event schedule object. 
  22.  * evs      < event schedule object to release >
  23.  
  24.  * @return MB_SUCCESS on success, MB_FAILURE otherwise.
  25.  */
  26. mb_error_t mb_tv_evs_release(mb_tv_event_schedule_t evs)
  27. {
  28. return MB_SUCCESS;
  29. }
  30. /**
  31.  * This function retrieves the number of events of an event schedule object. 
  32.  * evs < event schedule to query >
  33.  * event_count < pointer to int to store event count > 
  34.  
  35.  * @return MB_SUCCESS on success MB_FAILURE otherwise.
  36.  */
  37. mb_error_t mb_tv_evs_event_count_get(mb_tv_event_schedule_t evs,int *event_count)
  38. {
  39. kb_movie_eventSchedule_t *pEvs=(kb_movie_eventSchedule_t*)evs;
  40. if((pEvs==NULL)||(event_count==NULL))
  41. {
  42. mb_printf("n[Machblue]:Event schedule get event count NULL.");
  43. return MB_FAILURE;
  44. }
  45. *event_count=(int)pEvs->evtCount;
  46. return MB_SUCCESS;
  47. }
  48. /**
  49.  * This function retrieves the index of the current event of an 
  50.  * event schedule object if available. Otherwise returns 0 as
  51.  * index if the query is not applicable (recording event schedule for instance). 
  52.  * evs < event schedule to query >
  53.  * index       < pointer to the current event index to update >
  54.  
  55.  * @return MB_SUCCESS on success MB_FAILURE otherwise.
  56.  */
  57. mb_error_t mb_tv_evs_current_event_index_get(mb_tv_event_schedule_t evs,int *index)
  58. {
  59. unsigned long evtIndex;
  60. mb_system_time_t curTime;
  61. kb_movie_eventSchedule_t *pEvs=(kb_movie_eventSchedule_t*)evs;
  62. if((pEvs==NULL)||(index==NULL))
  63. {
  64. mb_printf("n[Machblue]:Event schedule get current event index NULL.");
  65. return MB_FAILURE;
  66. }
  67. // Gets the current time
  68. if(mb_system_time_get(&curTime)==MB_FAILURE)
  69. {
  70. mb_printf("n[Machblue]:Event schedule get current event index time error.");
  71. return MB_FAILURE;
  72. }
  73. *index=0;
  74. for(evtIndex=0;evtIndex<pEvs->evtCount;evtIndex++)
  75. {
  76. if((pEvs->events[evtIndex].attributes.start_time<curTime.sec)&&
  77.     ((pEvs->events[evtIndex].attributes.start_time+pEvs->events[evtIndex].attributes.event_info.duration)>curTime.sec))
  78. {
  79. *index=(int)evtIndex;
  80. break;
  81. }
  82. }
  83. return MB_SUCCESS;
  84. }
  85. /**
  86.  * This function retrieves events from an event schedule object. 
  87.  * This function is ASYNCHRONOUS. The system should send an 
  88.  * MB_TV_NR_EVS_EVENTS_GET notification once the request is completed.
  89.  * @see MB_TV_NR_EVS_EVENTS_GET
  90.  * evs < event schedule to query >
  91.  * first_event_pos < position of the first event to get (0 based) >
  92.  * event_count, < pointer to number of event to retrieve. This
  93.                                       pointer should be updated with number of events actually retrieved >                                       
  94.  * event_list        < pointer to list (array) of events to update >
  95.  
  96.  * @return MB_SUCCESS on success MB_FAILURE otherwise.
  97.  */
  98. mb_error_t mb_tv_evs_events_get(mb_tv_event_schedule_t evs,int first_event_pos,int *event_count,mb_tv_event_t *event_list)
  99. {
  100. unsigned long index;
  101. mb_error_t ret;
  102. mb_args_t args;
  103. kb_movie_eventSchedule_t *pEvs=(kb_movie_eventSchedule_t*)evs;
  104. kb_movie_event_t **pEvt=(kb_movie_event_t**)event_list;
  105. if((pEvt==NULL)||(event_count==NULL)||(pEvs == NULL))
  106. {
  107. mb_printf("n[Machblue]:Event schedule get event list NULL.");
  108. return MB_FAILURE;
  109. }
  110. for(index=first_event_pos;(index-first_event_pos<*event_count)&&(&(pEvs->events[index])!=  NULL);++index)
  111. *(pEvt++)=&(pEvs->events[index]);
  112. *event_count=(int)(index-first_event_pos);
  113. pEvt-=*event_count;
  114. MB_TV_EVENT_LIST_ARG(&args)=pEvt;
  115. MB_TV_STATUS_ARG(&args)=MB_SUCCESS;
  116. ret=kb_mb_notification_send(MB_TV_NR_EVS_EVENTS_GET,&args);
  117. if(ret!=MB_SUCCESS)
  118. {
  119. mb_printf("n[Machblue]:Event schedule get event list send notification error.");
  120.        return MB_FAILURE;
  121. }
  122. return MB_SUCCESS;
  123. }
  124. /**
  125.  * This function releases an event object. 
  126.  * event     < event to release >
  127.  
  128.  * @return MB_SUCCESS on success, MB_FAILURE otherwise.
  129.  */
  130. mb_error_t mb_tv_event_release(mb_tv_event_t event)
  131. {
  132. return MB_SUCCESS;
  133. }
  134. /**
  135.  * This function retrieves an event's attributes.
  136.  * event < event object to query >
  137.  * event_attrib   < event attributes structure to update >
  138.  
  139.  * @return MB_SUCCESS on success, MB_FAILURE otherwise.
  140.  */
  141. mb_error_t mb_tv_event_attributes_get(mb_tv_event_t event,mb_tv_event_attributes_t *event_attrib)
  142. {
  143. kb_movie_event_t *pEvt=(kb_movie_event_t*)event;
  144. if((event_attrib==NULL)||(pEvt==NULL))
  145. {
  146. mb_printf("n[Machblue]:Event get attributes NULL.");
  147. return MB_FAILURE;
  148. }
  149. *event_attrib=pEvt->attributes;
  150. return MB_SUCCESS;
  151. }
  152. /**
  153.  * This function retrieves a given event authorization flags.
  154.  * The list of authorization flags is enumerated in 
  155.  * mb_tv_authorization_flag_t.
  156.  * @see mb_tv_authorization_flag_t
  157.  * event < event object to query >
  158.  * auth_flags   < pointer to event authorization flags to update. @see mb_tv_authorization_flag_t. >
  159.  
  160.  * @return MB_SUCCESS on success, MB_FAILURE otherwise.
  161.  */
  162. mb_error_t mb_tv_event_auth_flags_get(mb_tv_event_t event,unsigned int *auth_flags)
  163. {
  164. kb_movie_event_t *pEvt=(kb_movie_event_t*)event;
  165. if((auth_flags==NULL)||(pEvt==NULL))
  166. {
  167. mb_printf("n[Machblue]:Event get auth flag NULL.");
  168. return MB_FAILURE;
  169. }
  170. *auth_flags=pEvt->auth;
  171. return MB_SUCCESS;
  172. }
  173. /**
  174.  * This function retrieves an event' service.
  175.  * event < event object to query >
  176.  * service   < pointer to event service to update >
  177.  
  178.  * @return MB_SUCCESS on success, MB_FAILURE otherwise.
  179.  */
  180. mb_error_t mb_tv_event_service_get(mb_tv_event_t event,mb_tv_service_t *service)
  181. {
  182. kb_movie_event_t *pEvt=(kb_movie_event_t*)event;
  183. kb_movie_service_t **pSer=(kb_movie_service_t**)service;
  184. if((pSer==NULL)||(pEvt==NULL))
  185. {
  186. mb_printf("n[Machblue]:Event get service NULL.");
  187. return MB_FAILURE;
  188. }
  189. *pSer=pEvt->service;
  190. return MB_SUCCESS;
  191. }