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

DVD

开发平台:

C/C++

  1. /*****************************************************************************
  2. File name  : regevent.c
  3. Description: Events related functions used by all test applications.
  4. COPYRIGHT (C) 2004 STMicroelectronics
  5. ******************************************************************************/
  6. /* Includes ---------------------------------------------------------------- */
  7. #include <time.h>
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <stdlib.h>
  11. #include <task.h>
  12. /* STAPI header------------------------------------------------------------- */
  13. #include "stddefs.h"
  14. #include "stlite.h"
  15. #include "stcommon.h"
  16. #include "stdevice.h"
  17. #include "sttbx.h"
  18. #include "stpti.h"
  19. #include "stpti_hal.h"
  20. #include "vid.h"
  21. #include "aud.h"
  22. #include "errors.h"
  23. #include "evt.h"
  24. #include "regevent.h"
  25. #ifdef TTX_SUPPORT
  26. #include "ttx.h"
  27. #endif /* TTX_SUPPORT */
  28. /* Private Types------------------------------------------------------------ */
  29. /* Private Constant--------------------------------------------------------- */
  30. /* Private Variables ------------------------------------------------------- */
  31. /* Required for Video */
  32. U32                      VideoEvent_STVID_NEW_PICTURE_TO_BE_DISPLAYED_EVT_Count   = 0;
  33. U32                      VideoEvent_Errors_Count = 0;
  34. STEVT_EventConstant_t    VideoEvent_NextToPrint  = 0;
  35. semaphore_t              AspectRatioChangedSem;
  36. STGXOBJ_AspectRatio_t    DisplayAspectRatio;
  37. /* Required for Audio */
  38. U32                      AudioEvent_STAUD_NEW_FRAME_EVT_Count = 0;
  39. U32                      AudioEvent_Errors_Count = 0;
  40. STEVT_EventConstant_t    AudioEvent_NextToPrint  = 0;
  41. /* Required for PTI */
  42. U32                      StptiEvent_Errors_Count = 0;
  43. STEVT_EventConstant_t    StptiEvent_NextToPrint  = 0;
  44. #ifdef TTX_SUPPORT
  45. /* Required for Tele Text */
  46. U32                      TeletextEvent_Errors_Count = 0;
  47. STEVT_EventConstant_t    TTXEvent_NextToPrint  = 0;
  48. #endif /* TTX_SUPPORT */
  49. /* Private Functions prototypes --------------------------------------------------- */
  50. /* video events */
  51. static void  VideoEvent_CallbackProc(STEVT_CallReason_t Reason, STEVT_EventConstant_t Event, const void *EventData );
  52. /* audio events */
  53. static void  AudioEvent_CallbackProc(STEVT_CallReason_t Reason, STEVT_EventConstant_t Event, const void *EventData );
  54. /* stpti events */
  55. static void  StptiEvent_CallbackProc(STEVT_CallReason_t Reason, STEVT_EventConstant_t Event, const void *EventData );
  56. #ifdef TTX_SUPPORT
  57. /* ttx events */
  58. static void TTXEvent_CallbackProc(STEVT_CallReason_t Reason, STEVT_EventConstant_t Event, const void *EventData );
  59. #endif /* TTX_SUPPORT */
  60. /*=========================================================================*/
  61. /* Function description */
  62. /*-------------------------------------------------------------------------
  63.  * Function : RegisterEvents
  64.  *
  65.  * Input    : None
  66.  * Output   :
  67.  * Return   : only returns if error when starting up.
  68.  * ----------------------------------------------------------------------*/
  69. ST_ErrorCode_t RegisterEvents(void)
  70. {
  71.     ST_ErrorCode_t                  ST_ErrorCode = ST_NO_ERROR;
  72.     STEVT_SubscribeParams_t         STEVT_SubscribeParams;
  73.     STVID_ConfigureEventParams_t    VID_EvtParams;
  74.     U32                             Event;
  75.     /* subscribe to stpti events */
  76.     STEVT_SubscribeParams.NotifyCallback = StptiEvent_CallbackProc;
  77.     for(Event = STPTI_EVENT_BASE; Event <= (int) STPTI_EVENT_TC_CODE_FAULT_EVT; Event++)
  78.     {
  79.         ST_ErrorCode = STEVT_Subscribe(g_KB_EVTHandle[KB_EVT_PTI], Event, &STEVT_SubscribeParams);
  80.         if ( ST_ErrorCode != ST_NO_ERROR )
  81.         {
  82.             STTBX_Print(("EVT_Subscribe(%d, STPTI)=%sn", Event, KB_ErrorGetText(ST_ErrorCode) ));
  83.             return ST_ErrorCode;
  84.         }
  85.     }
  86.     /* subscribe to audio events */
  87.     STEVT_SubscribeParams.NotifyCallback = AudioEvent_CallbackProc;
  88.     for(Event = STAUD_NEW_FRAME_EVT; Event <= STAUD_LOW_DATA_LEVEL_EVT; Event++)
  89.     {
  90.         ST_ErrorCode = STEVT_Subscribe(g_KB_EVTHandle[KB_EVT_AUD], Event, &STEVT_SubscribeParams);
  91.         if ( ST_ErrorCode != ST_NO_ERROR )
  92.         {
  93.             STTBX_Print(("EVT_Subscribe(%d, AUDIO)=%sn", Event, KB_ErrorGetText(ST_ErrorCode) ));
  94.             return ST_ErrorCode;
  95.         }
  96.     }
  97.     /* init the Aspect ratio semaphore */
  98.     semaphore_init_fifo_timeout ( &AspectRatioChangedSem, 0 );
  99.     /* subscribe to video events */
  100.     VID_EvtParams.Enable                = TRUE;
  101.     VID_EvtParams.NotificationsToSkip   = 0;
  102.     STEVT_SubscribeParams.NotifyCallback = VideoEvent_CallbackProc;
  103.     for(Event = STVID_ASPECT_RATIO_CHANGE_EVT; Event <= STVID_SYNCHRONISATION_CHECK_EVT; Event++)
  104.     {
  105.         /* STVID_NEW_PICTURE_TO_BE_DISPLAYED_EVT is to be removed as and when the STVID API removes it.*/
  106.         if ((Event == STVID_NEW_PICTURE_DECODED_EVT) ||
  107.             (Event == STVID_NEW_PICTURE_TO_BE_DISPLAYED_EVT) ||
  108.             (Event == STVID_DISPLAY_NEW_FRAME_EVT) ||
  109.             (Event == STVID_SYNCHRONISATION_CHECK_EVT))
  110.         {
  111.             ST_ErrorCode = STVID_ConfigureEvent(VID_Handle, Event, &VID_EvtParams);
  112.             if ( ST_ErrorCode != ST_NO_ERROR )
  113.             {
  114.                 STTBX_Print(("STVID_ConfigureEvent(%d, VIDEO)=%sn", Event, KB_ErrorGetText(ST_ErrorCode) ));
  115.                 return ST_ErrorCode;
  116.             }
  117.         }
  118.         ST_ErrorCode = STEVT_Subscribe(g_KB_EVTHandle[KB_EVT_VTG], Event, &STEVT_SubscribeParams);
  119.         if ( ST_ErrorCode != ST_NO_ERROR )
  120.         {
  121.             STTBX_Print(("EVT_Subscribe(%d, VIDEO)=%sn", Event, KB_ErrorGetText(ST_ErrorCode) ));
  122.             return ST_ErrorCode;
  123.         }
  124.     }
  125. #ifdef TTX_SUPPORT
  126.     /* subscribe to ttx events */
  127.     STEVT_SubscribeParams.NotifyCallback = TTXEvent_CallbackProc;
  128.     for(Event = STTTX_EVENT_PES_LOST; Event <= STTTX_EVENT_DATA_OVERFLOW; Event++)
  129.     {
  130.         ST_ErrorCode = STEVT_Subscribe(g_KB_EVTHandle[KB_EVT_TTX], Event, &STEVT_SubscribeParams);
  131.         if ( ST_ErrorCode != ST_NO_ERROR )
  132.         {
  133.             STTBX_Print(("EVT_Subscribe(%d, TTX)=%sn", Event, KB_ErrorGetText(ST_ErrorCode) ));
  134.             return ST_ErrorCode;
  135.         }
  136.     }
  137. #endif
  138.     return ST_ErrorCode;
  139. }
  140. /*-------------------------------------------------------------------------
  141.  * Function : VideoEvent_CallbackProc
  142.  * Input    : Event data
  143.  * Output   :
  144.  * Return   : nothing
  145.  * ----------------------------------------------------------------------*/
  146. static void VideoEvent_CallbackProc(STEVT_CallReason_t Reason, STEVT_EventConstant_t Event, const void *EventData )
  147. {
  148.     if (Reason == CALL_REASON_NOTIFY_CALL)
  149.     {
  150.         switch(Event)
  151.         {
  152.             case STVID_NEW_PICTURE_TO_BE_DISPLAYED_EVT:
  153.                 VideoEvent_STVID_NEW_PICTURE_TO_BE_DISPLAYED_EVT_Count++;
  154.                 AVHandleNewVideoFrame(Reason, Event, EventData);
  155.                 break;
  156.             case STVID_SYNCHRONISATION_CHECK_EVT:
  157.                 {
  158.                     STVID_SynchronisationInfo_t *SynchronisationInfo_p;
  159.                     SynchronisationInfo_p = (STVID_SynchronisationInfo_t *)EventData;
  160.                     if ((SynchronisationInfo_p->IsSynchronisationOk == TRUE) &&
  161.                         (SynchronisationInfo_p->ClocksDifference != 0))
  162.                     {
  163.                         (void) STAUD_DRSetSyncOffset(AUD_Handle,
  164.                                               STAUD_OBJECT_DECODER_COMPRESSED1,
  165.                                               SynchronisationInfo_p->ClocksDifference/90);
  166.                     }
  167.                 }
  168.                 break;
  169.             /* no reporting on these events */
  170.             case STVID_DISPLAY_NEW_FRAME_EVT: /* This Event Should be scraped. As it uses old types */
  171.             case STVID_NEW_PICTURE_DECODED_EVT:
  172.             case STVID_USER_DATA_EVT:
  173.             case STVID_SEQUENCE_INFO_EVT:
  174.             case STVID_SYNCHRO_EVT:
  175.                 break;
  176.             /* general report on these events with error count */
  177.             case STVID_IMPOSSIBLE_WITH_MEM_PROFILE_EVT:
  178.             /*     STTBX_Print(("n STVID_IMPOSSIBLE_WITH_MEM_PROFILE_EVT n"));*/
  179.             case STVID_DATA_ERROR_EVT:
  180.             /*STTBX_Print(("n STVID_DATA_ERROR_EVT n"));*/
  181.             case STVID_DATA_OVERFLOW_EVT:
  182.             /*STTBX_Print(("n STVID_DATA_OVERFLOW_EVT n"));*/
  183.             case STVID_DATA_UNDERFLOW_EVT:
  184.             /*STTBX_Print(("n STVID_DATA_UNDERFLOW_EVT n"));*/
  185.             case STVID_PICTURE_DECODING_ERROR_EVT:
  186.             /*STTBX_Print(("n STVID_PICTURE_DECODING_ERROR_EVT n"));*/
  187.                 VideoEvent_Errors_Count++;
  188.                 /* fall through (to report on other events below, without error counting) */
  189.             case STVID_BACK_TO_SYNC_EVT:
  190.             case STVID_DIGINPUT_WIN_CHANGE_EVT:
  191.             case STVID_FRAME_RATE_CHANGE_EVT:
  192.             case STVID_RESOLUTION_CHANGE_EVT:
  193.             case STVID_SPEED_DRIFT_THRESHOLD_EVT:
  194.             case STVID_STOPPED_EVT:
  195.             case STVID_OUT_OF_SYNC_EVT:
  196.                 /* only process if last Event printed out */
  197.                 if (VideoEvent_NextToPrint == LAST_EVENT_TO_PROCESS) VideoEvent_NextToPrint = Event;
  198.                 break;
  199.             case STVID_ASPECT_RATIO_CHANGE_EVT:
  200.                 DisplayAspectRatio = *((STGXOBJ_AspectRatio_t *)EventData);
  201.                 semaphore_signal ( &AspectRatioChangedSem );
  202.                 break;
  203.             case STVID_SCAN_TYPE_CHANGE_EVT:
  204.                 {
  205.                     /* Layer & Mixer are set to Interlaced scan type in their corresponding setups.
  206.                        Progressive scan type is not handled */
  207.                 }
  208.                 break;
  209.             default:
  210.                 break;
  211.         }
  212. //STTBX_Print(("nVID Event: %s n", VideoEvent_EventToStr(Event)));
  213.     }
  214. }
  215. /*-------------------------------------------------------------------------
  216.  * Function : AudioEvent_CallbackProc
  217.  * Input    : Event data
  218.  * Output   :
  219.  * Return   : nothing
  220.  * ----------------------------------------------------------------------*/
  221. static void AudioEvent_CallbackProc(STEVT_CallReason_t Reason, STEVT_EventConstant_t Event, const void *EventData )
  222. {
  223.     if (Reason == CALL_REASON_NOTIFY_CALL)
  224.     {
  225.         switch(Event)
  226.         {
  227.             case STAUD_NEW_FRAME_EVT:
  228.                 AudioEvent_STAUD_NEW_FRAME_EVT_Count++;
  229.                 break;
  230.             /* no reporting on these events */
  231.             case STAUD_EMPHASIS_EVT:
  232.             case STAUD_PREPARED_EVT:
  233.             case STAUD_RESUME_EVT:
  234.             case STAUD_PCM_BUF_COMPLETE_EVT:
  235.                 break;
  236.             /* general report on these events with error count */
  237.             case STAUD_DATA_ERROR_EVT:
  238.             case STAUD_SYNC_ERROR_EVT:
  239.                 AudioEvent_Errors_Count++;
  240.                 /* fall through (to report on other events below, without error counting) */
  241.             case STAUD_STOPPED_EVT:
  242.             case STAUD_NEW_ROUTING_EVT:
  243.             case STAUD_NEW_FREQUENCY_EVT:
  244.             case STAUD_LOW_DATA_LEVEL_EVT:
  245.             case STAUD_PCM_UNDERFLOW_EVT:
  246.             case STAUD_FIFO_OVERF_EVT:
  247.             case STAUD_CDFIFO_UNDERFLOW_EVT:
  248.                 /* only process if last Event printed out */
  249.                 if (AudioEvent_NextToPrint == LAST_EVENT_TO_PROCESS) AudioEvent_NextToPrint = Event;
  250.                 break;
  251.             default:
  252.                 break;
  253.         }
  254.     }
  255.  }
  256. /*-------------------------------------------------------------------------
  257.  * Function : StptiEvent_CallbackProc
  258.  * Input    : Event data
  259.  * Output   :
  260.  * Return   : nothing
  261.  * ----------------------------------------------------------------------*/
  262. static void StptiEvent_CallbackProc(STEVT_CallReason_t Reason, STEVT_EventConstant_t Event, const void *EventData )
  263. {
  264.     if (Reason == CALL_REASON_NOTIFY_CALL)
  265.     {
  266.         switch(Event)
  267.         {
  268.             /* no reporting on these events */
  269.             #ifdef STPTI_CAROUSEL_SUPPORT
  270.                case STPTI_EVENT_CAROUSEL_CYCLE_COMPLETE_EVT:
  271.                case STPTI_EVENT_CAROUSEL_ENTRY_TIMEOUT_EVT:
  272.                case STPTI_EVENT_CAROUSEL_TIMED_ENTRY_EVT:
  273.             #endif
  274.             #ifdef STPTI_INDEX_SUPPORT
  275.                case STPTI_EVENT_INDEX_MATCH_EVT:
  276.             #endif
  277.             #ifdef STPTI_DTV_SUPPORT
  278.                case STPTI_EVENT_CWP_BLOCK_EVT:
  279.             #endif
  280.             case STPTI_EVENT_CLEAR_TO_SCRAMBLED_EVT:
  281.             case STPTI_EVENT_DMA_COMPLETE_EVT:
  282.             case STPTI_EVENT_PCR_RECEIVED_EVT:
  283.             case STPTI_EVENT_SCRAMBLED_TO_CLEAR_EVT:
  284.                 break;
  285.             /* general report on these events with error count */
  286.             case STPTI_EVENT_CC_ERROR_EVT:
  287.                 (void) STPTI_EnableErrorEvent(KB_PTI_DeviceName, STPTI_EVENT_CC_ERROR_EVT);
  288.                 /* fall through to increment the error count */
  289.             case STPTI_EVENT_BUFFER_OVERFLOW_EVT:
  290.             case STPTI_EVENT_INTERRUPT_FAIL_EVT:
  291.             case STPTI_EVENT_INVALID_DESCRAMBLE_KEY_EVT:
  292.             case STPTI_EVENT_INVALID_LINK_EVT:
  293.             case STPTI_EVENT_INVALID_PARAMETER_EVT:
  294.             case STPTI_EVENT_PACKET_ERROR_EVT:
  295.             case STPTI_EVENT_SECTIONS_DISCARDED_ON_CRC_CHECK_EVT:
  296.             case STPTI_EVENT_TC_CODE_FAULT_EVT:
  297.                 StptiEvent_Errors_Count++;
  298.                 /* only process if last Event printed out */
  299.                 if (StptiEvent_NextToPrint == LAST_EVENT_TO_PROCESS) StptiEvent_NextToPrint = Event;
  300.                 break;
  301.             default:
  302.                 break;
  303.         }
  304.     }
  305. }
  306. #ifdef TTX_SUPPORT
  307. /*-------------------------------------------------------------------------
  308.  * Function : TTXEvent_CallbackProc
  309.  * Input    : event data
  310.  * Output   :
  311.  * Return   : nothing
  312.  * ----------------------------------------------------------------------*/
  313. static void TTXEvent_CallbackProc(STEVT_CallReason_t Reason, STEVT_EventConstant_t Event, const void *EventData )
  314. {
  315.     if (Reason == CALL_REASON_NOTIFY_CALL)
  316.     {
  317.         switch(Event)
  318.         {
  319.             /* no reporting on these events */
  320.             case STTTX_EVENT_PACKET_DISCARDED:
  321.             case STTTX_EVENT_PACKET_CONSUMED:
  322.             case STTTX_EVENT_PES_AVAILABLE:
  323.                 break;
  324.             /* report on other events below (without error counting) */
  325.             case STTTX_EVENT_PES_LOST:
  326.             case STTTX_EVENT_PES_NOT_CONSUMED:
  327.             case STTTX_EVENT_PES_INVALID:
  328.             case STTTX_EVENT_DATA_OVERFLOW:
  329.                 TeletextEvent_Errors_Count ++;
  330.                 if (TTXEvent_NextToPrint == 0) TTXEvent_NextToPrint = Event;  /* only process if last event printed out */
  331.                 break;
  332.             default:
  333.                 break;
  334.         }
  335.     }
  336. }
  337. #endif /* TTX_SUPPORT */
  338. /*-------------------------------------------------------------------------
  339.  * Function : VideoEvent_EventToStr
  340.  * Input    : Event data
  341.  * Output   :
  342.  * Return   : string
  343.  * ----------------------------------------------------------------------*/
  344. char *VideoEvent_EventToStr(STEVT_EventConstant_t Event)
  345. {
  346.     switch(Event)
  347.     {
  348.         case STVID_DISPLAY_NEW_FRAME_EVT:
  349.             return("STVID_DISPLAY_NEW_FRAME_EVT");
  350.         case STVID_IMPOSSIBLE_WITH_MEM_PROFILE_EVT:
  351.             return("STVID_IMPOSSIBLE_WITH_MEM_PROFILE_EVT");
  352.         case STVID_DATA_ERROR_EVT:
  353.             return("STVID_DATA_ERROR_EVT");
  354.         case STVID_DATA_OVERFLOW_EVT:
  355.             return("STVID_DATA_OVERFLOW_EVT");
  356.         case STVID_DATA_UNDERFLOW_EVT:
  357.             return("STVID_DATA_UNDERFLOW_EVT");
  358.         case STVID_PICTURE_DECODING_ERROR_EVT:
  359.             return("STVID_PICTURE_DECODING_ERROR_EVT");
  360.         case STVID_ASPECT_RATIO_CHANGE_EVT:
  361.             return("STVID_ASPECT_RATIO_CHANGE_EVT");
  362.         case STVID_BACK_TO_SYNC_EVT:
  363.             return("STVID_BACK_TO_SYNC_EVT");
  364.         case STVID_DIGINPUT_WIN_CHANGE_EVT:
  365.             return("STVID_DIGINPUT_WIN_CHANGE_EVT");
  366.         case STVID_FRAME_RATE_CHANGE_EVT:
  367.             return("STVID_FRAME_RATE_CHANGE_EVT");
  368.         case STVID_NEW_PICTURE_TO_BE_DISPLAYED_EVT:
  369.             return("STVID_NEW_PICTURE_TO_BE_DISPLAYED_EVT");
  370.         case STVID_NEW_PICTURE_DECODED_EVT:
  371.             return("STVID_NEW_PICTURE_DECODED_EVT");
  372.         case STVID_RESOLUTION_CHANGE_EVT:
  373.             return("STVID_RESOLUTION_CHANGE_EVT");
  374.         case STVID_SCAN_TYPE_CHANGE_EVT:
  375.             return("STVID_SCAN_TYPE_CHANGE_EVT");
  376.         case STVID_SEQUENCE_INFO_EVT:
  377.             return("STVID_SEQUENCE_INFO_EVT");
  378.         case STVID_SPEED_DRIFT_THRESHOLD_EVT:
  379.             return("STVID_SPEED_DRIFT_THRESHOLD_EVT");
  380.         case STVID_STOPPED_EVT:
  381.             return("STVID_STOPPED_EVT");
  382.         case STVID_OUT_OF_SYNC_EVT:
  383.             return("STVID_OUT_OF_SYNC_EVT");
  384.         case STVID_SYNCHRO_EVT:
  385.             return("STVID_SYNCHRO_EVT");
  386.         case STVID_USER_DATA_EVT:
  387.             return("STVID_USER_DATA_EVT");
  388.         case STVID_SYNCHRONISATION_CHECK_EVT:
  389.             return("STVID_SYNCHRONISATION_CHECK_EVT");
  390.         default:
  391.             break;
  392.     }
  393.     return("VID?");
  394. }
  395. /*-------------------------------------------------------------------------
  396.  * Function : AudioEvent_EventToStr
  397.  * Input    : Event data
  398.  * Output   :
  399.  * Return   : string
  400.  * ----------------------------------------------------------------------*/
  401. char *AudioEvent_EventToStr(STEVT_EventConstant_t Event)
  402. {
  403.     switch(Event)
  404.     {
  405.         case STAUD_NEW_FRAME_EVT:
  406.             return("STAUD_NEW_FRAME_EVT");
  407.         case STAUD_DATA_ERROR_EVT:
  408.             return("STAUD_DATA_ERROR_EVT");
  409.         case STAUD_EMPHASIS_EVT:
  410.             return("STAUD_EMPHASIS_EVT");
  411.         case STAUD_PREPARED_EVT:
  412.             return("STAUD_PREPARED_EVT");
  413.         case STAUD_RESUME_EVT:
  414.             return("STAUD_RESUME_EVT");
  415.         case STAUD_STOPPED_EVT:
  416.             return("STAUD_STOPPED_EVT");
  417.         case STAUD_PCM_UNDERFLOW_EVT:
  418.             return("STAUD_PCM_UNDERFLOW_EVT");
  419.         case STAUD_PCM_BUF_COMPLETE_EVT:
  420.             return("STAUD_PCM_BUF_COMPLETE_EVT");
  421.         case STAUD_FIFO_OVERF_EVT:
  422.             return("STAUD_FIFO_OVERF_EVT");
  423.         case STAUD_NEW_ROUTING_EVT:
  424.             return("STAUD_NEW_ROUTING_EVT");
  425.         case STAUD_NEW_FREQUENCY_EVT:
  426.             return("STAUD_NEW_FREQUENCY_EVT");
  427.         case STAUD_CDFIFO_UNDERFLOW_EVT:
  428.             return("STAUD_CDFIFO_UNDERFLOW_EVT");
  429.         case STAUD_SYNC_ERROR_EVT:
  430.             return("STAUD_SYNC_ERROR_EVT");
  431.         case STAUD_LOW_DATA_LEVEL_EVT:
  432.             return("STAUD_LOW_DATA_LEVEL_EVT");
  433.         default:
  434.             break;
  435.     }
  436.     return("AUD?");
  437. }
  438. /*-------------------------------------------------------------------------
  439.  * Function : StptiEvent_EventToStr
  440.  * Input    : Event data
  441.  * Output   :
  442.  * Return   : string
  443.  * ----------------------------------------------------------------------*/
  444. char *StptiEvent_EventToStr(STEVT_EventConstant_t Event)
  445. {
  446.     switch(Event)
  447.     {
  448.         case STPTI_EVENT_BUFFER_OVERFLOW_EVT:
  449.             return("STPTI_EVENT_BUFFER_OVERFLOW_EVT");
  450.         #ifdef STPTI_CAROUSEL_SUPPORT
  451.             case STPTI_EVENT_CAROUSEL_CYCLE_COMPLETE_EVT:
  452.                 return("STPTI_EVENT_CAROUSEL_CYCLE_COMPLETE_EVT");
  453.             case STPTI_EVENT_CAROUSEL_ENTRY_TIMEOUT_EVT:
  454.                 return("STPTI_EVENT_CAROUSEL_ENTRY_TIMEOUT_EVT");
  455.             case STPTI_EVENT_CAROUSEL_TIMED_ENTRY_EVT:
  456.                 return("STPTI_EVENT_CAROUSEL_TIMED_ENTRY_EVT");
  457.         #endif
  458.         case STPTI_EVENT_CC_ERROR_EVT:
  459.             return("STPTI_EVENT_CC_ERROR_EVT");
  460.         case STPTI_EVENT_CLEAR_TO_SCRAMBLED_EVT:
  461.             return("STPTI_EVENT_CLEAR_TO_SCRAMBLED_EVT");
  462.         #ifdef STPTI_DTV_SUPPORT
  463.            case STPTI_EVENT_CWP_BLOCK_EVT:
  464.               return("STPTI_EVENT_CWP_BLOCK_EVT");
  465.         #endif
  466.         case STPTI_EVENT_DMA_COMPLETE_EVT:
  467.             return("STPTI_EVENT_DMA_COMPLETE_EVT");
  468.         #ifdef STPTI_INDEX_SUPPORT
  469.             case STPTI_EVENT_INDEX_MATCH_EVT:
  470.                return("STPTI_EVENT_INDEX_MATCH_EVT");
  471.         #endif
  472.         case STPTI_EVENT_INTERRUPT_FAIL_EVT:
  473.             return("STPTI_EVENT_INTERRUPT_FAIL_EVT");
  474.         case STPTI_EVENT_INVALID_DESCRAMBLE_KEY_EVT:
  475.             return("STPTI_EVENT_INVALID_DESCRAMBLE_KEY_EVT");
  476.         case STPTI_EVENT_INVALID_LINK_EVT:
  477.             return("STPTI_EVENT_INVALID_LINK_EVT");
  478.         case STPTI_EVENT_INVALID_PARAMETER_EVT:
  479.             return("STPTI_EVENT_INVALID_PARAMETER_EVT");
  480.         case STPTI_EVENT_PACKET_ERROR_EVT:
  481.             return("STPTI_EVENT_PACKET_ERROR_EVT");
  482.         case STPTI_EVENT_PCR_RECEIVED_EVT:
  483.             return("STPTI_EVENT_PCR_RECEIVED_EVT");
  484.         case STPTI_EVENT_SCRAMBLED_TO_CLEAR_EVT:
  485.             return("STPTI_EVENT_SCRAMBLED_TO_CLEAR_EVT");
  486.         case STPTI_EVENT_SECTIONS_DISCARDED_ON_CRC_CHECK_EVT:
  487.             return("STPTI_EVENT_SECTIONS_DISCARDED_ON_CRC_CHECK_EVT");
  488.         case STPTI_EVENT_TC_CODE_FAULT_EVT:
  489.             return("STPTI_EVENT_TC_CODE_FAULT_EVT");
  490.         default:
  491.             break;
  492.     }
  493.     return("STPTI?");
  494. }
  495. #ifdef TTX_SUPPORT
  496. /*-------------------------------------------------------------------------
  497.  * Function : TTXEvent_EventToStr
  498.  * Input    : event data
  499.  * Output   :
  500.  * Return   : string
  501.  * ----------------------------------------------------------------------*/
  502. char *TTXEvent_EventToStr(STEVT_EventConstant_t Event)
  503. {
  504.     switch(Event)
  505.     {
  506.         case STTTX_EVENT_PES_LOST:
  507.             return("STTTX_EVENT_PES_LOST");
  508.         case STTTX_EVENT_PES_NOT_CONSUMED:
  509.             return("STTTX_EVENT_PES_NOT_CONSUMED");
  510.         case STTTX_EVENT_PES_INVALID:
  511.             return("STTTX_EVENT_PES_INVALID");
  512.         case STTTX_EVENT_PES_AVAILABLE:
  513.             return("STTTX_EVENT_PES_AVAILABLE");
  514.         case STTTX_EVENT_PACKET_DISCARDED:
  515.             return("STTTX_EVENT_PACKET_DISCARDED");
  516.         case STTTX_EVENT_PACKET_CONSUMED:
  517.             return("STTTX_EVENT_PACKET_CONSUMED");
  518.         case STTTX_EVENT_DATA_OVERFLOW:
  519.             return("STTTX_EVENT_DATA_OVERFLOW");
  520.         default:
  521.             break;
  522.     }
  523.     return("TTX?");
  524. }
  525. #endif /* TTX_SUPPORT */
  526. /* EOF --------------------------------------------------------------------- */