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

📄 l0399.c

📁 st7710的tuner标准驱动
💻 C
📖 第 1 页 / 共 3 页
字号:
Description:
    Dummy Function
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */

ST_ErrorCode_t lnb_l0399_overloadcheck(LNB_Handle_t Handle, BOOL  *IsOverTemp, BOOL *IsCurrentOvrLoad)
{
    ST_ErrorCode_t Error = ST_NO_ERROR;
    return(Error);
}

#if defined(STTUNER_DRV_SAT_LNBH21)
/* ----------------------------------------------------------------------------
Name: lnb_l0399_setttxmode()

Description:
    Dummy Function
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */

ST_ErrorCode_t lnb_l0399_setttxmode(LNB_Handle_t Handle, STTUNER_LnbTTxMode_t Ttxmode)
{
    ST_ErrorCode_t Error = ST_NO_ERROR;
    return(Error);
}
#endif
#endif


/* ----------------------------------------------------------------------------
Name: lnb_l0399_GetConfig()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_l0399_GetConfig(LNB_Handle_t Handle, LNB_Config_t *Config)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
   const char *identity = "STTUNER l0399.c lnb_l0399_GetConfig()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    #ifndef STTUNER_MINIDRIVER
    L0399_InstanceData_t     *Instance;

    Instance = (L0399_InstanceData_t *)Handle;

    Config->Status       = Instance->Config.Status;
    Config->Polarization = Instance->Config.Polarization;
    Config->ToneState    = Instance->Config.ToneState;
    #endif
    
    #ifdef STTUNER_MINIDRIVER
    Config->Status       = LNBInstance->Config.Status;
    Config->Polarization = LNBInstance->Config.Polarization;
    Config->ToneState    = LNBInstance->Config.ToneState;
    #endif
    
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
    STTBX_Print(("%s called\n", identity));
#endif
    return(Error);
}   



/* ----------------------------------------------------------------------------
Name: lnb_l0399_SetConfig()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_l0399_SetConfig(LNB_Handle_t Handle, LNB_Config_t *Config)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
   const char *identity = "STTUNER l0399.c lnb_l0399_SetConfig()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    #ifndef STTUNER_MINIDRIVER
    L0399_InstanceData_t     *Instance;

    Instance = (L0399_InstanceData_t *)Handle;
	
    /* In loopthrough mode demod one sends DiSeQC commands for sencond demod, so 13 to 18V
       transition for DiSEqC-ST commands should be on first demod */
    #ifdef STTUNER_DRV_SAT_SCR
		#ifdef STTUNER_DRV_SAT_SCR_LOOPTHROUGH
		    if(Instance->DISECQ_ST_ENABLE == FALSE)
		    {
			    /*Error = FE_399_SetPower(Instance->FE_399_Handle, LNB_STATUS_OFF);*/  /* Make LNB power off of second NIM because of no use */
			    Handle = LnbDrvHandleOne;
			    Instance = (L0399_InstanceData_t *)Handle;
		    }
		#endif
	#endif
    
	/* Select LNB band */
    if (Instance->Config.ToneState != Config->ToneState) 
    {
        switch (Config->ToneState)
        {
            case STTUNER_LNB_TONE_OFF:      /* No tone */
	            Error = FE_399_SetBand(Instance->FE_399_Handle, FE_BAND_LOW);
                break;

            case STTUNER_LNB_TONE_22KHZ:    /* 22KHz tone */
	            Error = FE_399_SetBand(Instance->FE_399_Handle, FE_BAND_HIGH);
                break;

            case STTUNER_LNB_TONE_DEFAULT:  /* no change */
                break;

            default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
                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:
	            Error = FE_399_SetPol(Instance->FE_399_Handle, FE_POL_VERTICAL); /*FE_399_SetPol first turns on the lnb power*/
                break;

            case STTUNER_PLR_HORIZONTAL:
	            Error = FE_399_SetPol(Instance->FE_399_Handle, FE_POL_HORIZONTAL); /*FE_399_SetPol first turns on the lnb power*/
                break;
                
            case STTUNER_LNB_OFF:
                Error = FE_399_SetPol(Instance->FE_399_Handle, FE_POL_NOPOLARIZATION);
				break;


            default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
                STTBX_Print(("%s fail polarity not V or H\n", identity));
#endif
                return(ST_ERROR_BAD_PARAMETER);
        }
       Instance->Config.Polarization = Config->Polarization;
    }


    /* Select power status */
    if (Instance->Config.Status != Config->Status)
    {
        switch (Config->Status)
        {
            case LNB_STATUS_ON:
                FE_399_SetPower(Instance->FE_399_Handle, LNB_STATUS_ON);
                break;

            case LNB_STATUS_OFF:
                FE_399_SetPower(Instance->FE_399_Handle, LNB_STATUS_OFF);
                break;

            default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
                STTBX_Print(("%s fail status not ON or OFF\n", identity));
#endif
                return(ST_ERROR_BAD_PARAMETER);
        }
       Instance->Config.Status = Config->Status;
    }
#endif

/****************MINIDRIVER**************************
*****************************************************
****************************************************/
 #ifdef STTUNER_MINIDRIVER
   
    #ifdef STTUNER_DRV_SAT_SCR
		#ifdef STTUNER_DRV_SAT_SCR_LOOPTHROUGH
		    if(LNBInstance->DISECQ_ST_ENABLE == FALSE)
		    {
			    /*Error = FE_399_SetPower(Instance->FE_399_Handle, LNB_STATUS_OFF);*/  /* Make LNB power off of second NIM because of no use */
			    Handle = LnbDrvHandleOne;
			    LNBInstance = (L0399_InstanceData_t *)Handle;
		    }
		#endif
	#endif
    
	/* Select LNB band */
    if (LNBInstance->Config.ToneState != Config->ToneState) 
    {
        switch (Config->ToneState)
        {
            case STTUNER_LNB_TONE_OFF:      /* No tone */
	            Error = FE_399_SetBand(LNBInstance->FE_399_Handle, FE_BAND_LOW);
                break;

            case STTUNER_LNB_TONE_22KHZ:    /* 22KHz tone */
	            Error = FE_399_SetBand(LNBInstance->FE_399_Handle, FE_BAND_HIGH);
                break;

            case STTUNER_LNB_TONE_DEFAULT:  /* no change */
                break;

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


    /* Select polarization */
    if (LNBInstance->Config.Polarization != Config->Polarization)
    {
        switch (Config->Polarization)
        {
            case STTUNER_PLR_VERTICAL:
	            Error = FE_399_SetPol(LNBInstance->FE_399_Handle, FE_POL_VERTICAL);
                break;

            case STTUNER_PLR_HORIZONTAL:
	            Error = FE_399_SetPol(LNBInstance->FE_399_Handle, FE_POL_HORIZONTAL);
                break;
                
            case STTUNER_LNB_OFF:  
				break;


            default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
                STTBX_Print(("%s fail polarity not V or H\n", identity));
#endif
                return(ST_ERROR_BAD_PARAMETER);
        }
       LNBInstance->Config.Polarization = Config->Polarization;
    }


    /* Select power status */
    if (LNBInstance->Config.Status != Config->Status)
    {
        switch (Config->Status)
        {
            case LNB_STATUS_ON:
/*              Error = FE_399_SetPower(LNBInstance->FE_399_Handle, LNB_STATUS_ON); */
                break;

            case LNB_STATUS_OFF:
/*              Error = FE_399_SetPower(LNBInstance->FE_399_Handle, LNB_STATUS_OFF); */
                break;

            default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
                STTBX_Print(("%s fail status not ON or OFF\n", identity));
#endif
                return(ST_ERROR_BAD_PARAMETER);
        }
       LNBInstance->Config.Status = Config->Status;
    }
#endif

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


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

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

    Instance = (L0399_InstanceData_t *)Handle;

    if(STTUNER_Util_CheckPtrNull(Instance) != ST_NO_ERROR)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
        STTBX_Print(("%s invalid handle\n", identity));
#endif
        return(ST_ERROR_INVALID_HANDLE);
    }

    switch(Function){

        case STTUNER_IOCTL_RAWIO: /* read/write device register (actual write to stv0399) */
            Error =  STTUNER_IOARCH_ReadWrite( Instance->IOHandle, 
                                                 ((SATIOCTL_IOARCH_Params_t *)InParams)->Operation,
                                                 ((SATIOCTL_IOARCH_Params_t *)InParams)->SubAddr,
                                                 ((SATIOCTL_IOARCH_Params_t *)InParams)->Data,
                                                 ((SATIOCTL_IOARCH_Params_t *)InParams)->TransferSize,
                                                 ((SATIOCTL_IOARCH_Params_t *)InParams)->Timeout );
            break;

        case STTUNER_IOCTL_REG_IN: /* read device register */
            *(int *)OutParams = ChipGetOneRegister( FE2CHIP(Instance->FE_399_Handle), *(int *)InParams);
            break;

        case STTUNER_IOCTL_REG_OUT: /* write device register */
            Error =  ChipSetOneRegister( FE2CHIP(Instance->FE_399_Handle),
                  ((SATIOCTL_SETREG_InParams_t *)InParams)->RegIndex,
                  ((SATIOCTL_SETREG_InParams_t *)InParams)->Value );
            break;

        default:
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
            STTBX_Print(("%s function %d not found\n", identity, Function));
#endif
            return(ST_ERROR_FEATURE_NOT_SUPPORTED);
    }


#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
    STTBX_Print(("%s function %d called\n", identity, Function));
#endif
    return(Error);

}



/* ----------------------------------------------------------------------------
Name: lnb_l0399_ioaccess()

Description:
    
Parameters:
    
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_l0399_ioaccess(LNB_Handle_t Handle, IOARCH_Handle_t IOHandle,STTUNER_IOARCH_Operation_t Operation, U16 SubAddr, U8 *Data, U32 TransferSize, U32 Timeout)
   
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
   const char *identity = "STTUNER l0399.c lnb_l0399_ioaccess()";
#endif
    ST_ErrorCode_t Error = ST_NO_ERROR;
    IOARCH_Handle_t MyIOHandle;
    L0399_InstanceData_t     *Instance;

    Instance = (L0399_InstanceData_t *)Handle;

    /* check handle */
    if(STTUNER_Util_CheckPtrNull(Instance) != ST_NO_ERROR)
    {
#ifdef STTUNER_DEBUG_MODULE_SATDRV_L0399
        STTBX_Print(("%s invalid handle\n", identity));
#endif
        return(ST_ERROR_INVALID_HANDLE);
    }

    MyIOHandle = Instance->IOHandle;

    /* if STTUNER_IOARCH_MAX_HANDLES then passthrough function required using our device handle/address */ 
    if (IOHandle == STTUNER_IOARCH_MAX_HANDLES)
    {
        Error = STTUNER_IOARCH_ReadWrite(MyIOHandle, Operation, SubAddr, Data, TransferSize, Timeout);
    }
    else    /* repeater */
    {
        Error = ST_ERROR_FEATURE_NOT_SUPPORTED; /* not supported for this lnb */
    }


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


/* ------------------------------------------------------------------------- */
/* /\/\/\/\/\/\/\/\/\/\/\/\/\UTILITY Functions/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ */
/* ------------------------------------------------------------------------- */






/* End of l0399.c */

⌨️ 快捷键说明

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