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

📄 hamaro_api.c

📁 机顶盒Hamaro解调器驱动。包含自动搜台
💻 C
📖 第 1 页 / 共 5 页
字号:
  {
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /* verify/set the output mode */
    switch(mpeg_out->OutputMode)
    {
      case  HAMARO_PARALLEL_OUT:
      case  HAMARO_SERIAL_OUT:
      {
        /* set l to 0 if par, 1 if serial, bail on error */
        ulRegVal = (unsigned long)((mpeg_out->OutputMode) == HAMARO_PARALLEL_OUT ? HAMARO_BIT_ZERO : HAMARO_BIT_ONE);
        if (HAMARO_RegisterWrite(nim,CX2430X_MPGDATAWIDTH,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
        break;
      }
      case  HAMARO_OUTMODE_UNDEF:
      default:
      {
        /* passed parameter was invalid, flag and bail */
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->ClkOutEdge)
    {
      case  HAMARO_CLKOUT_SETUP1_HOLD7:
      case  HAMARO_CLKOUT_SETUP3_HOLD5:
      case  HAMARO_CLKOUT_SETUP5_HOLD3:
      case  HAMARO_CLKOUT_SETUP7_HOLD1:
      {
        if (mpeg_out->OutputMode == HAMARO_PARALLEL_OUT)  
        {
          ulRegVal = (unsigned long)(mpeg_out->ClkOutEdge&0x0fUL);
          if (HAMARO_RegisterWrite(nim,CX2430X_MPGCLKPOS,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
          break;
        }
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
      case  HAMARO_CLKOUT_DATALR_DATACR:
      case  HAMARO_CLKOUT_DATALR_DATACF:
      case  HAMARO_CLKOUT_DATALF_DATACR:
      case  HAMARO_CLKOUT_DATALF_DATACF:
      {
        /* serial out */
        if (mpeg_out->OutputMode == HAMARO_SERIAL_OUT)  
        {
          ulRegVal = (unsigned long)(mpeg_out->ClkOutEdge&0x0fUL);
          if (HAMARO_RegisterWrite(nim,CX2430X_MPGCLKPOS,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
          break;
        }
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
      case  HAMARO_CLKOUT_RISING:
      case  HAMARO_CLKOUT_FALLING:
      case  HAMARO_CLKOUT_ENDEF:
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->ClkParityMode)
    {
      case  HAMARO_CLK_CONTINUOUS:
      case  HAMARO_CLK_GAPPED:
      {
        ulRegVal = (unsigned long)(mpeg_out->ClkParityMode == HAMARO_CLK_GAPPED ? 1 : 0);
        if (HAMARO_RegisterWrite(nim,CX2430X_MPGGAPCLK,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
        break;
      }
      case  HAMARO_CLK_PARITY_UNDEF:
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->HoldTime)
    {
      case  HAMARO_ZERO_HOLD_TIME:
      case  HAMARO_SMALL_HOLD_TIME:
      case  HAMARO_MEDIUM_HOLD_TIME:
      case  HAMARO_LARGE_HOLD_TIME:
      {
        switch(mpeg_out->HoldTime)
        {
          case  HAMARO_ZERO_HOLD_TIME:
          case  HAMARO_SMALL_HOLD_TIME:
          {
            ulRegVal = 0x02UL;
            break;
          }
          case  HAMARO_MEDIUM_HOLD_TIME:
          {
            ulRegVal = 0x00UL;
            break;
          }
          case  HAMARO_LARGE_HOLD_TIME:
          {
            ulRegVal = 0x01UL;
            break;
          }
          default:
          {
            break;
          }
        }  /* switch(... */

        /* write the hold-time registers */
        if (HAMARO_RegisterWrite(nim,CX2430X_MPGCLKHOLD,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
        break;
      }
      case  HAMARO_CLK_HOLD_UNDEF:
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->StartSignalPolarity)
    {
      case  HAMARO_ACTIVE_LOW:
      case  HAMARO_ACTIVE_HIGH:
      {
        ulRegVal = (mpeg_out->StartSignalPolarity == HAMARO_ACTIVE_HIGH) ? 0x01UL : 0x00UL;
        if (HAMARO_RegisterWrite(nim,CX2430X_MPGSTARTPOL,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
        break;
      }
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->StartSignalWidth)
    {
      case  HAMARO_BIT_WIDE:
      case  HAMARO_BYTE_WIDE:
      {
        ulRegVal = (mpeg_out->StartSignalWidth == HAMARO_BIT_WIDE) ? 0x01UL : 0x00UL;
        if (HAMARO_RegisterWrite(nim,CX2430X_MPGSTARTMODE,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
        break;
      }
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->ValidSignalPolarity)
    {
      case  HAMARO_ACTIVE_LOW:
      case  HAMARO_ACTIVE_HIGH:
      {
        ulRegVal = (mpeg_out->ValidSignalPolarity == HAMARO_ACTIVE_HIGH) ? 0x00UL : 0x01UL;
        if (HAMARO_RegisterWrite(nim,CX2430X_MPGVALIDPOL,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
        break;
      }
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->ValidSignalActiveMode)
    {
      case  HAMARO_ENTIRE_PACKET:
      case  HAMARO_FIRST_BYTE:
      {
        ulRegVal = (mpeg_out->ValidSignalActiveMode == HAMARO_FIRST_BYTE) ? 0x01UL : 0x00UL;
        if (HAMARO_RegisterWrite(nim,CX2430X_MPGVALIDMODE,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
        break;
      }
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->FailSignalPolarity)
    {
      case  HAMARO_ACTIVE_LOW:
      case  HAMARO_ACTIVE_HIGH:
      {
        ulRegVal = (mpeg_out->FailSignalPolarity == HAMARO_ACTIVE_HIGH) ? 0x00UL : 0x01UL;
        if (HAMARO_RegisterWrite(nim,CX2430X_MPGFAILPOL,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
        break;
      }
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->FailSignalActiveMode)
    {
      case  HAMARO_ENTIRE_PACKET:
      case  HAMARO_FIRST_BYTE:
      {
        ulRegVal = (mpeg_out->FailSignalActiveMode == HAMARO_FIRST_BYTE) ? 0x01UL : 0x00UL;
        if (HAMARO_RegisterWrite(nim,CX2430X_MPGFAILMODE,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
        break;
      }
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->SyncPunctMode)
    {
      case  HAMARO_SYNC_WORD_PUNCTURED:
      case  HAMARO_SYNC_WORD_NOT_PUNCTURED:
      {
        ulRegVal = (mpeg_out->SyncPunctMode == HAMARO_SYNC_WORD_PUNCTURED) ? 0x01UL : 0x00UL;
        if (HAMARO_RegisterWrite(nim,CX2430X_MPGSYNCPUNC,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
        break;
      }
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->FailValueWhenNoSync)
    {
      case  HAMARO_FAIL_LOW_WHEN_NO_SYNC:
      case  HAMARO_FAIL_HIGH_WHEN_NO_SYNC:
      {
        ulRegVal = (mpeg_out->FailValueWhenNoSync == HAMARO_FAIL_HIGH_WHEN_NO_SYNC) ? 0x01UL : 0x00UL;
        if (HAMARO_RegisterWrite(nim,CX2430X_MPGFAILNSVAL,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
        break;
      }
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    switch(mpeg_out->ClkSmoothSel)
    {
      case  HAMARO_PLL_ADVANCED_SMOOTHING:
      case  HAMARO_DDS_LEGACY_SMOOTHING:
      case  HAMARO_CLK_SMOOTHING_OFF:
      {
        if (HAMARO_DRIVER_SetSmoothClock(nim,mpeg_out->ClkSmoothSel,False) == False)  return(False);
        break;
      }
      default:
      {
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
        break;
      }
    }  /* switch(... */
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    if (HAMARO_DRIVER_SetRSCntlPin(nim,CX2430X_MPGCNTL1SEL,mpeg_out->RSCntlPin1Sel) == False)
    {
      return (False);
    }
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    if (HAMARO_DRIVER_SetRSCntlPin(nim,CX2430X_MPGCNTL2SEL,mpeg_out->RSCntlPin2Sel) == False)
    {
      return (False);
    }

   /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
   if (HAMARO_DRIVER_SetRSCntlPin(nim,CX2430X_MPGCNTL3SEL,mpeg_out->RSCntlPin3Sel) == False)
   {
     return (False);
   }
   /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
   switch (mpeg_out->NullDataMode)
   {
     case  HAMARO_FIXED_NULL_DATA_ENABLED:
     case  HAMARO_FIXED_NULL_DATA_DISABLED:
     {
       ulRegVal = (mpeg_out->NullDataMode == HAMARO_FIXED_NULL_DATA_ENABLED) ? 0x01UL : 0x00UL;
       if (HAMARO_RegisterWrite(nim,CX2430X_MPGFIXNULLDATAEN,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
       break;
     }
     default:
     {
       HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
       return(False);
       break;
     }
   }  /* switch(... */
   /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
   switch (mpeg_out->NullDataValue)
   {
     case  HAMARO_FIXED_NULL_DATA_HIGH:
     case  HAMARO_FIXED_NULL_DATA_LOW:
     {
       ulRegVal = (mpeg_out->NullDataValue == HAMARO_FIXED_NULL_DATA_HIGH) ? 0x01UL : 0x00UL;
       if (HAMARO_RegisterWrite(nim,CX2430X_MPGNULLDATAVAL,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
       break;
     }
     default:
     {
       HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
       return(False);
       break;
     }
   }  /* switch(... */
   /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
   switch (mpeg_out->ParityDataSel)
   {
     case HAMARO_RS_PARITY_DATA_LOW:
        ulRegVal = 0x01UL;
        break;
     case HAMARO_RS_PARITY_DATA_HIGH:
        ulRegVal = 0x02UL;
        break;
     case HAMARO_RS_PARITY_DATA_UNCHANGED:
        ulRegVal = 0x00UL;
        break;
     default:
        HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);
        return(False);
   } /* switch */

   if (HAMARO_RegisterWrite(nim,CX2430X_MPGPARSEL,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
   /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
   switch (mpeg_out->ValidSignalWhenFail)
   {
     case  HAMARO_VALID_SIGNAL_INACTIVE_WHEN_FAIL:
     case  HAMARO_VALID_SIGNAL_ACTIVE_WHEN_FAIL:
     {
       ulRegVal = (mpeg_out->ValidSignalWhenFail == HAMARO_VALID_SIGNAL_INACTIVE_WHEN_FAIL) ? 0x01UL : 0x00UL;
       if (HAMARO_RegisterWrite(nim,CX2430X_MPGFAILVALIDDIS,ulRegVal, HAMARO_DEMOD_I2C_IO) == False)  return(False);
       break;
     }
     default:
     {
       HAMARO_DRIVER_SET_ERROR(nim,HAMARO_BAD_PARM);

⌨️ 快捷键说明

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