📄 lnbh21.c
字号:
---------------------------------------------------------------------------- */
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 + -