📄 lnbh21.c
字号:
switch (Status)
{
case LNB_STATUS_ON:
STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_EN, 1, &(Instance->RegVal) );
break;
case LNB_STATUS_OFF:
STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_EN, 0,&(Instance->RegVal) );
break;
default:
break;
}
Error |= Instance->DeviceMap.Error;
Instance->DeviceMap.Error = ST_NO_ERROR;
return(Error);
}
#endif
#ifdef STTUNER_MINIDRIVER
/*----------------------------------------------------
FUNCTION LNBH21_SetPower
ACTION set lnb power
PARAMS IN
PARAMS OUT
RETURN
------------------------------------------------------*/
ST_ErrorCode_t LNBH21_SetPower(LNB_Status_t Status)
{
U8 powerstatus;
ST_ErrorCode_t Error = ST_NO_ERROR;
switch (Status)
{
case LNB_STATUS_ON:
Error = STTUNER_IODIRECT_ReadWrite(STTUNER_IO_LNB_READ, RLNBH21_REGS, 0x00, 0x00, &powerstatus, 1, FALSE);
powerstatus |= 0x04;
Error |= STTUNER_IODIRECT_ReadWrite(STTUNER_IO_SA_LNB_WRITE, RLNBH21_REGS, 0x00, 0x00, &powerstatus, 1, FALSE);
break;
case LNB_STATUS_OFF:/* always remain LNB ON, to get uninterrupted LNB power supply*/
Error = STTUNER_IODIRECT_ReadWrite(STTUNER_IO_LNB_READ, RLNBH21_REGS, 0x00, 0x00, &powerstatus, 1, FALSE);
powerstatus &= 0xFB;
Error |= STTUNER_IODIRECT_ReadWrite(STTUNER_IO_SA_LNB_WRITE, RLNBH21_REGS, 0x00, 0x00, &powerstatus, 1, FALSE);
break;
default:
break;
}
return(Error);
}
#endif
#ifndef STTUNER_MINIDRIVER
/*----------------------------------------------------
FUNCTION LNBH21_GetStatus
ACTION Get LNb status -> ShortCircuit(OLF), Over Temperature(OTF)
PARAMS IN
PARAMS OUT
RETURN
------------------------------------------------------*/
ST_ErrorCode_t LNBH21_GetStatus(LNB_Handle_t Handle, STTUNER_IOREG_DeviceMap_t *DeviceMap, LNB_Status_t *Status)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
const char *identity = "STTUNER lnbh21.c lnb_lnbh21_getstatus()";
#endif
U8 olf_otf; /* short circuit and over temp. reporting*/
LNBH21_InstanceData_t *Instance;
ST_ErrorCode_t Error = ST_NO_ERROR;
Instance = (LNBH21_InstanceData_t *)Handle;
if(STTUNER_Util_CheckPtrNull(Instance) != ST_NO_ERROR)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
STTBX_Print(("%s invalid handle\n", identity));
#endif
return(ST_ERROR_INVALID_HANDLE);
}
Instance->DeviceMap.Mode = IOREG_MODE_NOSUBADR; /* LNB21 read require no subaddress*/
olf_otf = STTUNER_IOREG_GetRegister(&Instance->DeviceMap, Instance->IOHandle, (U16)RLNBH21_REGS);
if((olf_otf & 0x01)== 0x01)
(*Status) = LNB_STATUS_SHORT_CIRCUIT;
if((olf_otf & 0x02) == 0x02)
(*Status) = LNB_STATUS_OVER_TEMPERATURE;
if((olf_otf & 0x03) == 0x03)
(*Status) = LNB_STATUS_SHORTCIRCUIT_OVERTEMPERATURE;
Error |= Instance->DeviceMap.Error;
Instance->DeviceMap.Error = ST_NO_ERROR;
return(Error);
}
#endif
#ifdef STTUNER_MINIDRIVER
/*----------------------------------------------------
FUNCTION LNBH21_GetStatus
ACTION Get LNb status -> ShortCircuit(OLF), Over Temperature(OTF)
PARAMS IN
PARAMS OUT
RETURN
------------------------------------------------------*/
ST_ErrorCode_t LNBH21_GetStatus(LNB_Status_t *Status)
{
U8 olf_otf; /* short circuit and over temp. reporting*/
ST_ErrorCode_t Error = ST_NO_ERROR;
Error = STTUNER_IODIRECT_ReadWrite(STTUNER_IO_LNB_READ, RLNBH21_REGS, 0x00, 0x00, &olf_otf, 1, FALSE);
if((olf_otf & 0x01)== 0x01)
(*Status) = LNB_STATUS_SHORT_CIRCUIT;
if((olf_otf & 0x02) == 0x02)
(*Status) = LNB_STATUS_OVER_TEMPERATURE;
if((olf_otf & 0x03) == 0x03)
(*Status) = LNB_STATUS_SHORTCIRCUIT_OVERTEMPERATURE;
return(Error);
}
#endif
#ifndef STTUNER_MINIDRIVER
/*----------------------------------------------------
FUNCTION LNBH21_Reg_Install
ACTION
PARAMS IN
PARAMS OUT
RETURN
------------------------------------------------------*/
ST_ErrorCode_t LNBH21_Reg_Install(STTUNER_IOREG_DeviceMap_t *DeviceMap)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
const char *identity = "STTUNER lnbh21.c LNBH21_Reg_Install()";
#endif
ST_ErrorCode_t Error = ST_NO_ERROR;
if (Error != ST_NO_ERROR)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
STTBX_Print(("%s fail error=%d\n", identity, Error));
#endif
}
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
STTBX_Print(("%s installed ok\n", identity));
#endif
}
return (Error);
}
#endif
#ifndef STTUNER_MINIDRIVER
/* ----------------------------------------------------------------------------
Name: lnb_lnbh21_ioctl_set()
Description:
access device specific low-level functions
Parameters:
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_lnbh21_ioctl_set(LNB_Handle_t Handle,void *InParams)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
const char *identity = "STTUNER lnbh21.c lnb_lnbh21_ioctl_get()";
#endif
ST_ErrorCode_t Error = ST_NO_ERROR;
LNBH21_InstanceData_t *Instance;
LNB_IOCTL_Config_t *lnb_ioctl_input;
lnb_ioctl_input = (LNB_IOCTL_Config_t *)InParams;
Instance = (LNBH21_InstanceData_t *)Handle;
Instance->DeviceMap.Mode = IOREG_MODE_SUBADR_8;
if(STTUNER_Util_CheckPtrNull(Instance) != ST_NO_ERROR)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
STTBX_Print(("%s invalid handle\n", identity));
#endif
return(ST_ERROR_INVALID_HANDLE);
}
/* set the Tx mode */
switch(lnb_ioctl_input->TTX_Mode)
{
case LNB_IOCTL_TTXMODE_NOCHANGE : /* Do nothing */
break;
case LNB_IOCTL_TTXMODE_RX : /* set LNBH21 to receiver mode */
STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_ISEL, 0, &(Instance->RegVal) );
break;
case LNB_IOCTL_TTXMODE_TX : /* set LNBH21 to transmitter mode */
STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_ISEL, 1, &(Instance->RegVal) );
break;
default:
break; /* do nothing */
}
/* set current protection mode */
switch(lnb_ioctl_input->ShortCircuitProtectionMode)
{
case LNB_IOCTL_PROTECTION_NOCHANGE : /* Do nothing */
break;
case LNB_IOCTL_PROTECTION_STATIC : /* set current portection to static mode */
STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_PCL, 1, &(Instance->RegVal) );
break;
case LNB_IOCTL_PROTECTION_DYNAMIC : /* set current portection to dynamic mode */
STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_PCL, 0, &(Instance->RegVal));
break;
default:
break; /* do nothing */
}
/* setpower block mode */
switch(lnb_ioctl_input->PowerControl)
{
case LNB_IOCTL_POWERBLCOKS_NOCHANGE : /* Do nothing */
break;
case LNB_IOCTL_POWERBLCOKS_ENABLED : /* set LNBH21 to power enable mode */
STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_EN, 1,&(Instance->RegVal) );
break;
case LNB_IOCTL_POWERBLCOKS_DISABLED : /* set LNBH21 to power disable mode */
STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_EN, 0,&(Instance->RegVal) );
break;
default:
break; /* do nothing */
}
/* setpower LLC Mode */
switch(lnb_ioctl_input->LLC_Mode)
{
case LNB_IOCTL_LLCMODE_NOCHANGE : /* Do nothing */
break;
case LNB_IOCTL_LLCMODE_ENABLED : /* set LNBH21 to LLC mode ON 13/18V +1 */
STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_LLC, 1, &(Instance->RegVal) );
break;
case LNB_IOCTL_LLCMODE_DISABLED : /* set LNBH21 to LLC mode OFF 13/18V */
STTUNER_IOREG_SetFieldVal(&Instance->DeviceMap, FLNBH21_LLC, 0, &(Instance->RegVal) );
break;
default:
break; /* do nothing */
}
Error = LNBH21_UpdateLNB(Instance);
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
STTBX_Print(("%s function called\n", identity));
#endif
Error |= Instance->DeviceMap.Error;
Instance->DeviceMap.Error = ST_NO_ERROR;
return(Error);
}
/* ----------------------------------------------------------------------------
Name: lnb_lnbh21_ioctl_get()
Description:
access device specific low-level functions
Parameters:
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_lnbh21_ioctl_get(LNB_Handle_t Handle,void *OutParams)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
const char *identity = "STTUNER lnbh21.c lnb_lnbh21_ioctl_get()";
#endif
ST_ErrorCode_t Error = ST_NO_ERROR;
LNBH21_InstanceData_t *Instance;
LNB_IOCTL_Config_t *lnb_ioctl_output;
lnb_ioctl_output = (LNB_IOCTL_Config_t *)OutParams;
Instance = (LNBH21_InstanceData_t *)Handle;
Instance->DeviceMap.Mode = IOREG_MODE_NOSUBADR;/* LNBH21 read require no subaddress*/
if(STTUNER_Util_CheckPtrNull(Instance) != ST_NO_ERROR)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
STTBX_Print(("%s invalid handle\n", identity));
#endif
return(ST_ERROR_INVALID_HANDLE);
}
/* Get the TTX mode */
lnb_ioctl_output->TTX_Mode = STTUNER_IOREG_GetField (&Instance->DeviceMap, Instance->IOHandle, FLNBH21_ISEL);
switch( lnb_ioctl_output->TTX_Mode)
{
case 0:
lnb_ioctl_output->TTX_Mode = LNB_IOCTL_TTXMODE_RX;
break;
case 1:
lnb_ioctl_output->TTX_Mode = LNB_IOCTL_TTXMODE_TX;
break;
default:
break;
}
/* Get current protection mode */
lnb_ioctl_output->ShortCircuitProtectionMode = STTUNER_IOREG_GetField (&Instance->DeviceMap, Instance->IOHandle, FLNBH21_PCL);
switch( lnb_ioctl_output->ShortCircuitProtectionMode)
{
case 0:
lnb_ioctl_output->ShortCircuitProtectionMode = LNB_IOCTL_PROTECTION_DYNAMIC;
break;
case 1:
lnb_ioctl_output->ShortCircuitProtectionMode = LNB_IOCTL_PROTECTION_STATIC;
break;
default:
break;
}
/* Get lnb power mode */
lnb_ioctl_output->PowerControl = STTUNER_IOREG_GetField (&Instance->DeviceMap, Instance->IOHandle , FLNBH21_EN);
switch( lnb_ioctl_output->PowerControl)
{
case 0:
lnb_ioctl_output->PowerControl = LNB_IOCTL_POWERBLCOKS_DISABLED;
break;
case 1:
lnb_ioctl_output->PowerControl = LNB_IOCTL_POWERBLCOKS_ENABLED;
break;
default:
break;
}
lnb_ioctl_output->LLC_Mode = STTUNER_IOREG_GetField (&Instance->DeviceMap, Instance->IOHandle , FLNBH21_LLC);
switch( lnb_ioctl_output->LLC_Mode)
{
case 0:
lnb_ioctl_output->LLC_Mode = LNB_IOCTL_LLCMODE_DISABLED;
break;
case 1:
lnb_ioctl_output->LLC_Mode = LNB_IOCTL_LLCMODE_ENABLED;
break;
default:
break;
}
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
STTBX_Print(("%s function called\n", identity));
#endif
Error |= Instance->DeviceMap.Error;
Instance->DeviceMap.Error = ST_NO_ERROR;
return(Error);
}
#endif
#ifndef STTUNER_MINIDRIVER
/* ----------------------------------------------------------------------------
Name: lnb_lnbh21_overloadcheck()
Description:
access device specific low-level functions
Parameters:
Return Value:
---------------------------------------------------------------------------- */
ST_ErrorCode_t lnb_lnbh21_overloadcheck(LNB_Handle_t Handle, BOOL *IsOverTemp, BOOL *IsCurrentOvrLoad)
{
#ifdef STTUNER_DEBUG_MODULE_SATDRV_LNBH21
const char *identity = "STTUNER lnbh21.c lnb_lnbh21_overloadcheck()";
#endif
ST_ErrorCode_t Error = ST_NO_E
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -