📄 l0399.c
字号:
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 + -