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

📄 tunsdrv.c

📁 st7710的tuner标准驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
Name: tuner_tunsdrv_Open()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunsdrv_Open(ST_DeviceName_t *DeviceName, TUNER_OpenParams_t *OpenParams, TUNER_Handle_t *Handle)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
   const char *identity = "STTUNER tunsdrv.c tuner_tunsdrv_Open()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    TUNSDRV_InstanceData_t *Instance;

    if(Installed == FALSE)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s fail driver not installed\n", identity));
#endif
        return(STTUNER_ERROR_INITSTATE);
    }

    /* now safe to lock semaphore */
    SEM_LOCK(Lock_InitTermOpenClose);

    /* ---------- check that at least one init has taken place ---------- */
    if(InstanceChainTop == NULL)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s fail nothing initalized\n", identity));
#endif
        SEM_UNLOCK(Lock_InitTermOpenClose);
        return(STTUNER_ERROR_INITSTATE);
    }

    /* find  handle from name */
    Instance = InstanceChainTop;

    while(strcmp((char *)Instance->DeviceName, (char *)DeviceName) != 0)
    {
        /* error, should have found matching DeviceName before end of list */
        if(Instance->InstanceChainNext == NULL) 
        {       
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
            STTBX_Print(("\n%s fail no block named '%s' before end of list\n", identity, DeviceName));
#endif
            SEM_UNLOCK(Lock_InitTermOpenClose);
            return(STTUNER_ERROR_INITSTATE);
        }
        Instance = Instance->InstanceChainNext;   /* next block */
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("(%s)", Instance->DeviceName));
#endif
    }
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
    STTBX_Print((" found ok\n"));
#endif

    if(Instance->TopLevelHandle != STTUNER_MAX_HANDLES)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s fail driver instance already open\n", identity));
#endif
        SEM_UNLOCK(Lock_InitTermOpenClose);
        return(ST_ERROR_OPEN_HANDLE);
    }

    /* now got pointer to free (and valid) data block */
    *Handle = (U32)Instance;

#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
    STTBX_Print(("%s opened ok\n", identity));
#endif

    SEM_UNLOCK(Lock_InitTermOpenClose);
    return(Error);
}   


#ifdef STTUNER_BASIC
#ifdef  STTUNER_DRV_SAT_TUN_VG1011
/* ----------------------------------------------------------------------------
Name:   tuner_tunsdrv_Open_VG1011()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunsdrv_Open_VG1011(ST_DeviceName_t *DeviceName, TUNER_OpenParams_t *OpenParams, TUNER_Capability_t *Capability, TUNER_Handle_t *Handle)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
   const char *identity = "STTUNER tunsdrv.c tuner_tunsdrv_Open_VG1011()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    TUNSDRV_InstanceData_t *Instance;

    Error = tuner_tunsdrv_Open(DeviceName, OpenParams, Handle);
    if (Error != ST_NO_ERROR)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s fail, Error=%d\n", identity, Error));
#endif
        return(Error);
    }        

    Instance = TUNSDRV_GetInstFromHandle(*Handle);
 
    if (Instance->TunerType != STTUNER_TUNER_VG1011)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s fail no STTUNER_TUNER_VG1011 for name (%s)\n", identity, Instance->DeviceName ));
#endif
        return(ST_ERROR_BAD_PARAMETER);
    }

    /* Tuner Frequency range capability -> GNBvd09094 */
    Capability->FreqMin = 950000;
    Capability->FreqMax = 2150000;

    Instance->FreqFactor = 1;

    Instance->Status.TunerStep = 125000;
    Instance->Status.IntermediateFrequency = 479500;
    Instance->Status.IQSense = 1;
    #ifdef STTUNER_IQ_WIRING
    Instance->Status.IQSense = STTUNER_IQ_WIRING;
    #endif
    

    Instance->BandWidth[0] = 36000;
    Instance->BandWidth[1] = 0;

    Instance->IOBuffer[0] = 0x34;
    Instance->IOBuffer[1] = 0x7C;
    Instance->IOBuffer[2] = 0x95;
    Instance->IOBuffer[3] = 0x80;

    /* Select default bandwidth */
    Instance->Status.Bandwidth = Instance->BandWidth[0];

    /* Set device configuration (demod MUST have been initalized if this tuner is using its repeater)
       subaddress 0, Tx 4 bytes
    */
    Error = STTUNER_IOARCH_ReadWrite(Instance->IOHandle, STTUNER_IO_WRITE, 0, Instance->IOBuffer, 4, TUNSDRV_IO_TIMEOUT);

    if (Error == ST_NO_ERROR)
    {
        Instance->TopLevelHandle = OpenParams->TopLevelHandle; /* mark as used */
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s opened ok\n", identity));
#endif
    }
    else
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s fail Error=%d\n", identity, Error));
#endif
    }

    return(Error);
}   
#endif

#ifdef STTUNER_DRV_SAT_TUN_S68G21
/* ----------------------------------------------------------------------------
Name:   tuner_tunsdrv_Open_S68G21()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunsdrv_Open_S68G21(ST_DeviceName_t *DeviceName, TUNER_OpenParams_t *OpenParams, TUNER_Capability_t *Capability, TUNER_Handle_t *Handle)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
   const char *identity = "STTUNER tunsdrv.c tuner_tunsdrv_Open_S68G21()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    TUNSDRV_InstanceData_t *Instance;

    Error = tuner_tunsdrv_Open(DeviceName, OpenParams, Handle);
    if (Error != ST_NO_ERROR)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s fail, Error=%d\n", identity, Error));
#endif
        return(Error);
    }        

    Instance = TUNSDRV_GetInstFromHandle(*Handle);
     
    /* Tuner Frequency range capability -> GNBvd09094 */
    Capability->FreqMin = 950000;
    Capability->FreqMax = 2150000;
        
    Instance->FreqFactor = 1;

    Instance->Status.TunerStep = 125000;
    Instance->Status.IntermediateFrequency = 479500;
    Instance->Status.IQSense = -1;
    #ifdef STTUNER_IQ_WIRING
    Instance->Status.IQSense = STTUNER_IQ_WIRING;
    #endif

    Instance->BandWidth[0] = 36000;
    Instance->BandWidth[1] = 0;

    Instance->IOBuffer[0] = 0x0B;
    Instance->IOBuffer[1] = 0x00;
    Instance->IOBuffer[2] = 0xCE;
    Instance->IOBuffer[3] = 0xA1;

    /* Select default bandwidth */
    Instance->Status.Bandwidth = Instance->BandWidth[0];

   /* Set device configuration (demod MUST have been initalized if this tuner is using its repeater)
      subaddress 0, Tx 4 bytes
   */
    Error = STTUNER_IOARCH_ReadWrite(Instance->IOHandle, STTUNER_IO_WRITE, 0, Instance->IOBuffer, 4, TUNSDRV_IO_TIMEOUT);

    if (Error == ST_NO_ERROR)
    {
        Instance->TopLevelHandle = OpenParams->TopLevelHandle; /* mark as used */
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s opened ok\n", identity));
#endif
    }
    else
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s fail Error=%d\n", identity, Error));
#endif
    }

    return(Error);
}   
#endif

#ifdef STTUNER_DRV_SAT_TUN_TUA6100
/* ----------------------------------------------------------------------------
Name:   tuner_tunsdrv_Open_TUA6100()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunsdrv_Open_TUA6100(ST_DeviceName_t *DeviceName, TUNER_OpenParams_t *OpenParams, TUNER_Capability_t *Capability, TUNER_Handle_t *Handle)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
   const char *identity = "STTUNER tunsdrv.c tuner_tunsdrv_Open_TUA6100()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    TUNSDRV_InstanceData_t *Instance;

    Error = tuner_tunsdrv_Open(DeviceName, OpenParams, Handle);
    if (Error != ST_NO_ERROR)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s fail, Error=%d\n", identity, Error));
#endif
        return(Error);
    }        

    /* Tuner Frequency range capability -> GNBvd09094 */
    Capability->FreqMin = 950000;
    Capability->FreqMax = 2150000;
    
    Instance = TUNSDRV_GetInstFromHandle(*Handle);

    Instance->FreqFactor = 1;

    Instance->Status.TunerStep = 125000;
    Instance->Status.IntermediateFrequency = 0;
    Instance->Status.IQSense = 1;
    #ifdef STTUNER_IQ_WIRING
    Instance->Status.IQSense = STTUNER_IQ_WIRING;
    #endif

    Instance->BandWidth[0] = 60000;
    Instance->BandWidth[1] = 0;

    Instance->IOBuffer[0] = 0x00;
    Instance->IOBuffer[1] = 0x0B;
    Error = STTUNER_IOARCH_ReadWrite(Instance->IOHandle, STTUNER_IO_WRITE, 0, Instance->IOBuffer, 2, TUNSDRV_IO_TIMEOUT);

    Instance->IOBuffer[0] = 0x02;
    Instance->IOBuffer[1] = 0x1C;
    Instance->IOBuffer[2] = 0x20;
    Error |= STTUNER_IOARCH_ReadWrite(Instance->IOHandle, STTUNER_IO_WRITE, 0, Instance->IOBuffer, 3, TUNSDRV_IO_TIMEOUT);

    Instance->IOBuffer[0] = 0x01;
    Instance->IOBuffer[1] = 0x2C;
    Instance->IOBuffer[2] = 0x96;
    Instance->IOBuffer[3] = 0x00;
    Error |= STTUNER_IOARCH_ReadWrite(Instance->IOHandle, STTUNER_IO_WRITE, 0, Instance->IOBuffer, 4, TUNSDRV_IO_TIMEOUT);

    /* Select default bandwidth */
    Instance->Status.Bandwidth = Instance->BandWidth[0];

    if (Error == ST_NO_ERROR)
    {
        Instance->TopLevelHandle = OpenParams->TopLevelHandle; /* mark as used */
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s opened ok\n", identity));
#endif
    }
    else
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s fail Error=%d\n", identity, Error));
#endif
    }

    return(Error);
}   

#endif

#ifdef STTUNER_DRV_SAT_TUN_EVALMAX
/* ----------------------------------------------------------------------------
Name:   tuner_tunsdrv_Open_EVALMAX()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t tuner_tunsdrv_Open_EVALMAX(ST_DeviceName_t *DeviceName, TUNER_OpenParams_t *OpenParams, TUNER_Capability_t *Capability, TUNER_Handle_t *Handle)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
   const char *identity = "STTUNER tunsdrv.c tuner_tunsdrv_Open_EVALMAX()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    TUNSDRV_InstanceData_t *Instance;

    Error = tuner_tunsdrv_Open(DeviceName, OpenParams, Handle);
    if (Error != ST_NO_ERROR)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_TUNSDRV
        STTBX_Print(("%s fail, Error=%d\n", identity, Error));
#endif
        return(Error);
    }        

     /* Tuner Frequency range capability -> GNBvd09094 */
    Capability->FreqMin = 950000;
    Capability->FreqMax = 2150000;
     
    Instance = TUNSDRV_GetInstFromHandle(*Handle);

    Instance->FreqFactor = 1;
    Instance->Status.TunerStep = 500000;
    Instance->Status.IntermediateFrequency = 479500;
    Instance->Status.IQSense = 1;
    #ifdef STTUNER_IQ_WIRING
    Instance->Status.IQSense = STTUNER_IQ_WIRING;
    #endif

    Instance->BandWidth[0] = 16000;
    Instance->BandWidth[1] = 60000;
    Instance->BandWidth[2] = 0;

    Instance->IOBuffer[0] = 0x08;
    Instance->IOBuffer[1] = 0xC2;
    Instance->IOBuffer[2] = 0x82;
    Instance->IOBuffer[3] = 0x41;

    /* Select default bandwidth */
    Instance->Status.Bandwidth = Instance->BandWidth[0];

    /* Set device configuration (demod MUST have been initalized if this tuner is using its repeater)
       subaddress 0, Tx 4 bytes
    */
    Error = STTUNER_IOARCH_ReadWrite(Instance->IOHandle, STTUNER_IO_WRITE, 0, Instance->IOBuffer, 4, TUNSDRV_IO_TIMEOUT);

    if (Error == ST_NO_ERROR)
    {
        Instance->TopLevelHandle = OpenParams->TopLevelHandle; /* mark as used */
#ifdef

⌨️ 快捷键说明

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