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

📄 lnbh21.c

📁 st7710的tuner标准驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_lnbh21_Close(LNB_Handle_t Handle, LNB_CloseParams_t *CloseParams)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
   const char *identity = "STTUNER lnbh21.c lnb_lnbh21_Close()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    #ifndef STTUNER_MINIDRIVER
    LNBH21_InstanceData_t     *Instance;

    Instance = (LNBH21_InstanceData_t *)Handle;

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

    SEM_LOCK(Lock_InitTermOpenClose);

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

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

    Instance->TopLevelHandle = STTUNER_MAX_HANDLES;

#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
    STTBX_Print(("%s closed\n", identity));
#endif

    SEM_UNLOCK(Lock_InitTermOpenClose);
    #endif
    
#ifdef STTUNER_MINIDRIVER
LNBH21Instance->TopLevelHandle = STTUNER_MAX_HANDLES;
#endif
    
    return(Error);
}   

#ifndef STTUNER_MINIDRIVER

/* ----------------------------------------------------------------------------
Name: lnb_lnbh21_GetConfig()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_lnbh21_GetConfig(LNB_Handle_t Handle, LNB_Config_t *Config)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
   const char *identity = "STTUNER lnbh21.c lnb_lnbh21_GetConfig()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    LNBH21_InstanceData_t     *Instance;

    Instance = (LNBH21_InstanceData_t *)Handle;

    Config->Status       = Instance->Config.Status;
    Config->Polarization = Instance->Config.Polarization;
    Config->ToneState    = Instance->Config.ToneState;
    Config->ShortCircuitProtectionMode    = Instance->Config.ShortCircuitProtectionMode;
    Config->CableLossCompensation    = Instance->Config.CableLossCompensation;

#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
    STTBX_Print(("%s called\n", identity));
#endif
    return(Error);
}   
#endif



#ifdef STTUNER_MINIDRIVER
/* ----------------------------------------------------------------------------
Name: lnb_lnbh21_GetConfig()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_lnbh21_GetConfig(LNB_Config_t *Config)
{

    ST_ErrorCode_t Error = ST_NO_ERROR;
    
    Config->Status       = LNBH21Instance->Config.Status;
    Config->Polarization = LNBH21Instance->Config.Polarization;
    Config->ToneState    = LNBH21Instance->Config.ToneState;
    
    Config->ShortCircuitProtectionMode    = LNBH21Instance->Config.ShortCircuitProtectionMode;
    Config->CableLossCompensation    = LNBH21Instance->Config.CableLossCompensation;


    return(Error);
}   
#endif

 #ifndef STTUNER_MINIDRIVER
/* ----------------------------------------------------------------------------
Name: lnb_lnbh21_SetConfig()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_lnbh21_SetConfig(LNB_Handle_t Handle, LNB_Config_t *Config)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
   const char *identity = "STTUNER lnbh21.c lnb_lnbh21_SetConfig()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    LNBH21_InstanceData_t     *Instance;

    Instance = (LNBH21_InstanceData_t *)Handle;
    Instance->TopLevelHandle = Config->TopLevelHandle;
    Instance->DeviceMap.Mode = IOREG_MODE_SUBADR_8;

    /* Select LNB band */
    if (Instance->Config.ToneState != Config->ToneState)	
    {
        switch (Config->ToneState)
        {
            case STTUNER_LNB_TONE_OFF:      /* No tone */          
            case STTUNER_LNB_TONE_22KHZ:    /* 22KHz tone */
                 LNBH21_SetLnb(Instance, Config->ToneState);
                break;

            case STTUNER_LNB_TONE_DEFAULT:  /* no change */
                break;

            default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
                STTBX_Print(("%s fail tone state not default, off or 22KHz\n", identity));
#endif
                return(ST_ERROR_BAD_PARAMETER);
        }
        Instance->Config.ToneState = Config->ToneState;
    }


    /* Select polarization */
    if (Instance->Config.Polarization != Config->Polarization)
    {
        switch (Config->Polarization)
        {
            case STTUNER_PLR_VERTICAL:      /* OP_2 controls -- 18V (high) */
                LNBH21_SetPolarization(Instance, VERTICAL);
                break;

            case STTUNER_PLR_HORIZONTAL:    /* OP_2 controls -- 13V (low) */
                LNBH21_SetPolarization(Instance, HORIZONTAL);
                break;
            case STTUNER_LNB_OFF:    /* OP_2 controls -- 13V (low) */
                LNBH21_SetPolarization(Instance, NOPOLARIZATION);
                break;

            default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
                STTBX_Print(("%s fail polarity not V or H\n", identity));
#endif
                return(ST_ERROR_BAD_PARAMETER);
        }
       Instance->Config.Polarization = Config->Polarization;
    } 
 
    /* Select CableLossCompensation*/
    if (Instance->Config.CableLossCompensation != Config->CableLossCompensation)
    {
        /* Below statement is for future use */
        /*LNBH21_SetLossCompensation(&Instance->DeviceMap, Config->CableLossCompensation);*/
        /*Instance->Config.CableLossCompensation = Config->CableLossCompensation;*/
        
        /* Set cable loss compensation off as default*/
        LNBH21_SetLossCompensation(Instance, FALSE);
    }
    
    
    /* Select ShortCircuitProtection*/
    if (Instance->Config.ShortCircuitProtectionMode != Config->ShortCircuitProtectionMode)
    {
        switch (Config->ShortCircuitProtectionMode)
        {
        	/* The below two cases are for future use*/
            case STTUNER_LNB_PROTECTION_DYNAMIC: /*PCL=0*/
                LNBH21_SetProtectionMode(Instance, Config->ShortCircuitProtectionMode);
                break;

            case STTUNER_LNB_PROTECTION_STATIC: /*PCL=1*/
                LNBH21_SetProtectionMode(Instance, Config->ShortCircuitProtectionMode);
                break;

            default: /* None */
               break;
         }
        
        /* Below statement is for future use */
        /*Instance->Config.ShortCircuitProtectionMode = Config->ShortCircuitProtectionMode;*/
    }


    /* Select power status */
        switch (Config->Status)
        {
            case LNB_STATUS_ON:
            case LNB_STATUS_OFF:
                LNBH21_SetPower(Instance, Config->Status);
                break;

            default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
                STTBX_Print(("%s fail status not ON or OFF\n", identity));
#endif
                return(ST_ERROR_BAD_PARAMETER);
        }
       Instance->Config.Status = Config->Status;
    
    /* now write in LNBH21 to update the status*/
    Error = LNBH21_UpdateLNB( Instance);

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

    return(Error);
}   
#endif

#ifdef STTUNER_MINIDRIVER
/* ----------------------------------------------------------------------------
Name: lnb_lnbh21_SetConfig()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_lnbh21_SetConfig(LNB_Config_t *Config)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
   const char *identity = "STTUNER lnbh21.c lnb_lnbh21_SetConfig()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    
    /* Select LNB band */
    if (LNBH21Instance->Config.ToneState != Config->ToneState)
    {
        switch (Config->ToneState)
        {
            case STTUNER_LNB_TONE_OFF:      /* No tone */
                LNBH21_SetLnb(Config->ToneState);
                break;

            case STTUNER_LNB_TONE_22KHZ:    /* 22KHz tone */
                LNBH21_SetLnb(Config->ToneState);
                break;

            case STTUNER_LNB_TONE_DEFAULT:  /* no change */
                break;

            default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
                STTBX_Print(("%s fail tone state not default, off or 22KHz\n", identity));
#endif
                return(ST_ERROR_BAD_PARAMETER);
        }
        LNBH21Instance->Config.ToneState = Config->ToneState;
    }


    /* Select polarization */
    if (LNBH21Instance->Config.Polarization != Config->Polarization)
    {
        switch (Config->Polarization)
        {
            case STTUNER_PLR_VERTICAL:      /* OP_2 controls -- 18V (high) */
                LNBH21_SetPolarization(VERTICAL);
                break;

            case STTUNER_PLR_HORIZONTAL:    /* OP_2 controls -- 13V (low) */
                LNBH21_SetPolarization(HORIZONTAL);
                break;

            default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
                STTBX_Print(("%s fail polarity not V or H\n", identity));
#endif
                return(ST_ERROR_BAD_PARAMETER);
        }
       LNBH21Instance->Config.Polarization = Config->Polarization;
    }
    
    
    
    /* Select CableLossCompensation*/
    if (LNBH21Instance->Config.CableLossCompensation != Config->CableLossCompensation)
    {
        /* Below statement is for future use */
        /*LNBH21_SetLossCompensation(Config->CableLossCompensation);*/
        /*LNBH21Instance->Config.CableLossCompensation = Config->CableLossCompensation;*/
        
        /* Set cable loss compensation off as default*/
        LNBH21_SetLossCompensation(FALSE);
    }
    
    
    /* Select ShortCircuitProtection*/
    if (LNBH21Instance->Config.ShortCircuitProtectionMode != Config->ShortCircuitProtectionMode)
    {
        switch (Config->ShortCircuitProtectionMode)
        {
        	/* The below two cases are for future use*/
            /*case STTUNER_LNB_PROTECTION_DYNAMIC:*/ /*PCL=0*/
                /*LNBH21_SetProtectionMode(Config->ShortCircuitProtectionMode);*/
                /*break;*/

            /*case STTUNER_LNB_PROTECTION_STATIC:*/ /*PCL=1*/
                /*LNBH21_SetProtectionMode(Config->ShortCircuitProtectionMode);*/
                /*break;*/

            default:
                LNBH21_SetProtectionMode(1); /* set lnb protection mode static as default*/
            	break;
         }
        
        /* Below statement is for future use */
        /*LNBH21Instance->Config.ShortCircuitProtectionMode = Config->ShortCircuitProtectionMode;*/
    }


    /* Select power status */
        switch (Config->Status)
        {
            case LNB_STATUS_ON:
            case LNB_STATUS_OFF:
                LNBH21_SetPower(Config->Status);
                break;

            default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
                STTBX_Print(("%s fail status not ON or OFF\n", identity));
#endif
                return(ST_ERROR_BAD_PARAMETER);
        }
       LNBH21Instance->Config.Status = Config->Status;
    
    /* now write in LNBH21 to update the status*/
    Error = LNBH21_UpdateLNB();

#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
    STTBX_Print(("%s ok\n", identity));
#endif
    return(Error);
}   
#endif

#ifndef STTUNER_MINIDRIVER
/* ----------------------------------------------------------------------------
Name: lnb_lnbh21_ioctl()

Description:
    access device specific low-level functions
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_lnbh21_ioctl(LNB_Handle_t Handle, U32 Function, void *InParams, void *OutParams, STTUNER_Da_Status_t *Status)
   
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
   const char *identity = "STTUNER lnbh21.c lnb_lnbh21_ioctl()";
#endif
    ST_ErrorCode_t Error;
    LNBH21_InstanceData_t     *Instance;

⌨️ 快捷键说明

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