⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mv_itv.c

📁 tuner扫描
💻 C
📖 第 1 页 / 共 2 页
字号:
)
/*EMP=======================================================================*/
{
    unsigned long lv_mask;
    UInt32 lv_protection_level;

    tmosalDisableInterruptsNoSysCall(&lv_protection_level);

    /* If an ISR was installed, enable it */
    if (LV_MV_ITV_status.isr_table[in_index].isr != LF_dummy_isr)
    {
       LV_MV_ITV_status.irpt_mask_video |= (0x0001 << in_index);
       lv_mask = LV_MV_ITV_status.irpt_mask_video;
#ifdef DV_DEBUG
       /* Take also into account the interrupts used for debugging. */
       lv_mask |= LV_MV_ITV_status.irpt_debug_mask_video;
#endif
       MV_drv_set_video_int_enable ( lv_mask);

    }

    tmosalEnableInterruptsNoSysCall(lv_protection_level);
}

#ifdef DV_DEBUG
/*MPF=======================================================================*/
/*
    FUNCTION NAME:    MV_ITV_debug_enable_irpt
    DESCRIPTION:
        Enable an interrupt source for debugging.

    RETURNS:
    CALLING SEQUENCE:
*/
void
MV_ITV_debug_enable_irpt(
MV_ITV         in_index  /* In: Irpt source for isr  */
)
/*EMP=======================================================================*/
{
    unsigned long  lv_mask;
    UInt32  lv_protection_level;

    tmosalDisableInterruptsNoSysCall(&lv_protection_level);

    LV_MV_ITV_status.irpt_debug_mask_video |= (0x0001 << in_index);
    lv_mask = LV_MV_ITV_status.irpt_debug_mask_video;
    lv_mask |= LV_MV_ITV_status.irpt_mask_video;

    MV_drv_set_video_int_enable (lv_mask);

    tmosalEnableInterruptsNoSysCall(lv_protection_level);
}
#endif

/*MPF=======================================================================*/
/*
    FUNCTION NAME:    MV_ITV_disable_irpt
    DESCRIPTION:
        Disable an interrupt source.

    RETURNS:
    CALLING SEQUENCE:
*/
void
MV_ITV_disable_irpt(
MV_ITV         in_index  /* In: Irpt source for isr  */
)
/*EMP=======================================================================*/
{
    unsigned long lv_mask;
    UInt32 lv_protection_level;

    tmosalDisableInterruptsNoSysCall(&lv_protection_level);


    LV_MV_ITV_status.irpt_mask_video  &= ~(0x0001 << in_index);
    lv_mask = LV_MV_ITV_status.irpt_mask_video;
#ifdef DV_DEBUG
    /* Also enable interrupts used for debugging. */
    lv_mask |= LV_MV_ITV_status.irpt_debug_mask_video;
#endif
    MV_drv_set_video_int_enable(lv_mask);
    
    tmosalEnableInterruptsNoSysCall(lv_protection_level);
}


/*MPF=======================================================================*/
/*
    FUNCTION NAME:    MV_ITV_isr_enable_irpt
    DESCRIPTION:
        Enable an interrupt source.
        This function doesn't use enter/leave region.

    RETURNS:
    CALLING SEQUENCE:
*/
void
MV_ITV_isr_enable_irpt(
MV_ITV         in_index  /* In: Irpt source for isr  */
)
/*EMP=======================================================================*/
{
   unsigned long lv_mask;

   /* Enable the interrupt source for the IRQ */

   LV_MV_ITV_status.irpt_mask_video |= (0x0001 << in_index);
   lv_mask = LV_MV_ITV_status.irpt_mask_video;
#ifdef DV_DEBUG
   /* Also enable interrupts used for debugging. */
   lv_mask |= LV_MV_ITV_status.irpt_debug_mask_video;
#endif
   MV_drv_set_video_int_enable(lv_mask);

} /* End MV_ITV_isr_enable_irpt */


/*MPF=======================================================================*/
/*
    FUNCTION NAME:    MV_ITV_isr_disable_irpt
    DESCRIPTION:
        Disable an interrupt source from an interrupt service routine.
        This function doesn't use enter/leave region.

    RETURNS:
    CALLING SEQUENCE:
*/
void
MV_ITV_isr_disable_irpt(
MV_ITV         in_index  /* In: Irpt source for isr  */
)
/*EMP=======================================================================*/
{
    unsigned long lv_mask;

    /* Disable the interrupt source for the IRQ */

    LV_MV_ITV_status.irpt_mask_video &= ~(0x0001 << in_index);
    lv_mask =  LV_MV_ITV_status.irpt_mask_video;
#ifdef DV_DEBUG
    /* Also enable interrupts used for debugging. */
    lv_mask |= LV_MV_ITV_status.irpt_debug_mask_video;
#endif
    MV_drv_set_video_int_enable(lv_mask);

} /* End MV_ITV_isr_disable_irpt */

/*==========================================================================*/
/*       L O C A L  F U N C T I O N S                                       */
/*==========================================================================*/

/*LPF=======================================================================*/
/*
    FUNCTION NAME:  LF_dummy_isr
    DESCRIPTION:
        Dummy Interrupt Service Routine.

    CALLING SEQUENCE:
*/
static void
LF_dummy_isr(
void
)
/*EMP=======================================================================*/
{
}

/*LPF=======================================================================*/
/*
     FUNCTION NAME:     LF_isr
     DESCRIPTION:
         Interrupt service routine
         Determine interrupt source and call corresponding function.

     CALLING SEQUENCE:
*/
static void
LF_isr (
void * pData_dummy
)
/*EMP=======================================================================*/
{
   unsigned long lv_video_status;
    
   /* Read interrupt status */
   GV_itv_video_status = (MV_drv_video_int_status() & MV_drv_video_int_enable());
   GV_itv_video_event  = (MV_drv_video_event() & MV_drv_video_event_enable());
   GV_itv_fbm_event    = (MV_drv_fbm_event() & MV_drv_fbm_event_enable());
   GV_itv_error_event  = (MV_drv_error_event() & MV_drv_error_event_enable());
   GV_itv_system_event  = (MV_drv_system_event() & MV_drv_system_event_enable());

   MV_drv_set_system_event_clear(GV_itv_system_event);
   MV_drv_set_video_event_clear(GV_itv_video_event);
   MV_drv_set_error_event_clear(GV_itv_error_event);
   MV_drv_set_fbm_event_clear(GV_itv_fbm_event);
   MV_drv_set_video_int_clear(GV_itv_video_status);


   lv_video_status = GV_itv_video_status;

   /* Do not handle disabled interrupts. */
   lv_video_status = lv_video_status & LV_MV_ITV_status.irpt_mask_video;

    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_NEW_VIDEO_DTS) == MV_VIDEO_INT_STATUS_NEW_VIDEO_DTS)
      LV_MV_ITV_status.isr_table[MV_ITV_NEW_VIDEO_DTS].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_NEW_VIDEO_PTS) == MV_VIDEO_INT_STATUS_NEW_VIDEO_PTS)
      LV_MV_ITV_status.isr_table[MV_ITV_NEW_VIDEO_PTS].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_RESET_DONE) == MV_VIDEO_INT_STATUS_RESET_DONE)
      LV_MV_ITV_status.isr_table[MV_ITV_RESET_DONE].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_VIDEO_EVENT) == MV_VIDEO_INT_STATUS_VIDEO_EVENT)
      LV_MV_ITV_status.isr_table[MV_ITV_VIDEO_EVENT].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_ERROR_EVENT) == MV_VIDEO_INT_STATUS_ERROR_EVENT)
      LV_MV_ITV_status.isr_table[MV_ITV_ERROR_EVENT].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_FBM_EVENT) == MV_VIDEO_INT_STATUS_FBM_EVENT)
      LV_MV_ITV_status.isr_table[MV_ITV_FBM_EVENT].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_END_OF_PICTURE_HEADER) == MV_VIDEO_INT_STATUS_END_OF_PICTURE_HEADER)
      LV_MV_ITV_status.isr_table[MV_ITV_END_OF_PICTURE_HEADER].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_END_OF_PICTURE_DECODING) == MV_VIDEO_INT_STATUS_END_OF_PICTURE_DECODING)
      LV_MV_ITV_status.isr_table[MV_ITV_END_OF_PICTURE_DECODING].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_SYSTEM_EVENT) == MV_VIDEO_INT_STATUS_SYSTEM_EVENT)
      LV_MV_ITV_status.isr_table[MV_ITV_SYSTEM_EVENT].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_VIDEO_INSYNC) == MV_VIDEO_INT_STATUS_VIDEO_INSYNC)
      LV_MV_ITV_status.isr_table[MV_ITV_VIDEO_INSYNC].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_NEW_VIDEO_PES) == MV_VIDEO_INT_STATUS_NEW_VIDEO_PES)
      LV_MV_ITV_status.isr_table[MV_ITV_NEW_VIDEO_PES].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_VIDEO_FIFO_FULL) == MV_VIDEO_INT_STATUS_VIDEO_FIFO_FULL)
      LV_MV_ITV_status.isr_table[MV_ITV_VIDEO_FIFO_FULL].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_VIDEO_FIFO_EMPTY) == MV_VIDEO_INT_STATUS_VIDEO_FIFO_EMPTY)
      LV_MV_ITV_status.isr_table[MV_ITV_VIDEO_FIFO_EMPTY].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_VIDEO_FIFO_OVERFLOW) == MV_VIDEO_INT_STATUS_VIDEO_FIFO_OVERFLOW)
      LV_MV_ITV_status.isr_table[MV_ITV_VIDEO_FIFO_OVER].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_VIDEO_FIFO_UNDERFLOW) == MV_VIDEO_INT_STATUS_VIDEO_FIFO_UNDERFLOW)
      LV_MV_ITV_status.isr_table[MV_ITV_VIDEO_FIFO_UNDER].isr();
    
   if ((lv_video_status & MV_VIDEO_INT_STATUS_VIDEO_FIFO_PTR_UPDATED) == MV_VIDEO_INT_STATUS_VIDEO_FIFO_PTR_UPDATED)
      LV_MV_ITV_status.isr_table[MV_ITV_VIDEO_FIFO_PTR_UPDATED].isr();

   if ((lv_video_status & MV_VIDEO_INT_STATUS_STILL_FIFO_READ) == MV_VIDEO_INT_STATUS_STILL_FIFO_READ)
      LV_MV_ITV_status.isr_table[MV_ITV_STILL_FIFO_READ].isr();
    
} /* End LF_isr */

/*==========================================================================*/
/*        H I S T O R Y                                                     */
/*==========================================================================*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -