📄 drv_ch_pio_com.c
字号:
int ErrCode;
ErrCode = 0;
#if defined(CHIPSET_ST)
ErrCode = (int)STPIO_Clear((STPIO_Handle_t)Handle, (STPIO_BitMask_t)BitMask);
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("DRV_CH_Pio_Clear() Error : STPIO_Clear(0x%x , 0x%x) 0x%x \n" , Handle , BitMask , ErrCode ));
}
#else
#endif
return ErrCode;
} /* end of DRV_CH_Pio_Clear */
/*=============================================================================
Function : DRV_CH_Pio_Power
Description : Tuner power On/Off
Input :
Output :
Return : Success if TRUE
=============================================================================*/
int DRV_CH_Pio_Power( unsigned char unitId,__channel_power_t power )
{
int ErrCode;
PrintError((">>DRV_CH_Pio_Power\n\r"));
ErrCode = 0;
if (power == CHANNEL_POWER_ON){
}
else
{
}
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("DRV_CH_Pio_Power(%d) Error : 0x%x \n\r" , power , ErrCode ));
}
return ErrCode;
} /* end of DRV_CH_Pio_Power */
/*=============================================================================
Function : drv_ch_Pio_LnbVoltage
Description :
Input : ucVoltage : 0 - Standard 1 - High
Output :
Return : TRUE if error, FALSE if success
=============================================================================*/
int DRV_CH_Pio_LnbVoltage( unsigned char unitId , unsigned char ucVoltage )
{
int ErrCode;
if(LnbProtected ==1)return 0;// lnb Protection
if (ucVoltage == 1) // High Voltage
{
//printf("drv_ch_pio_LnbVoltage unit id [%x] : HIGH\n",unitId);
#if defined(CHIPSET_ST)
//ErrCode = DRV_CH_Pio_Set(g_CHLnbHandle[unitId], g_CH_LnbPioPin[unitId]);
ErrCode = DRV_CH_Pio_Set(PIO_GET_HANDLE(2,CH_PIO_CH_LNB_HANDLEID), g_CH_LnbPioPin[unitId]);
#else
#endif
#if !defined(TIMIMG_ADJUSTMENT_CHANNEL)
VK_TASK_Sleep(10); // stable time > 10ms
#endif
}
else
{
//printf("drv_ch_pio_LnbVoltage unit id [%x] : LOW\n",unitId);
#if defined(CHIPSET_ST)
//ErrCode = DRV_CH_Pio_Clear(g_CHLnbHandle[unitId], g_CH_LnbPioPin[unitId]);
ErrCode = DRV_CH_Pio_Clear(PIO_GET_HANDLE(2,CH_PIO_CH_LNB_HANDLEID), g_CH_LnbPioPin[unitId]);
#else
#endif
}
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("drv_ch_pio_LnbVoltage(%d) : Error 0x%x \n\r" , ucVoltage, ErrCode));
}
return ErrCode;
} /* end of drv_ch_Pio_Lnbvoltage */
#if defined(SUPPORT_LEGACY_SWITCH)
// legacy polarization
int DRV_CH_Pio_Legacy_Polarization( unsigned char unitId , unsigned char ucPolar )
{
int ErrCode;
if (ucPolar == 1) // High Voltage
{
#if defined(CHIPSET_ST)
//ErrCode = DRV_CH_Pio_Set(g_CHVhHandle[unitId], (STPIO_BitMask_t)g_CH_VhPioPin[unitId]);
ErrCode = DRV_CH_Pio_Set(PIO_GET_HANDLE(2,CH_PIO_CH_VH_HANDLEID), (STPIO_BitMask_t)g_CH_VhPioPin[unitId]);
#else
#endif
}
else
{
#if defined(CHIPSET_ST)
//ErrCode = DRV_CH_Pio_Clear(g_CHVhHandle[unitId], (STPIO_BitMask_t)g_CH_VhPioPin[unitId]);
ErrCode = DRV_CH_Pio_Clear(PIO_GET_HANDLE(2,CH_PIO_CH_VH_HANDLEID), (STPIO_BitMask_t)g_CH_VhPioPin[unitId]);
#else
#endif
}
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("drv_ch_pio_LnbVoltage(%d) : Error 0x%x \n" , ucPolar, ErrCode));
}
return ErrCode;
} /* end of drv_ch_Pio_Polarization */
//end
#endif
int DRV_CH_Pio_Polarization( unsigned char unitId , unsigned char ucPolar )
{
int ErrCode;
if (ucPolar == 1) // High Voltage
{
#if defined(CHIPSET_ST)
//ErrCode = DRV_CH_Pio_Set(g_CHVhHandle[unitId], (STPIO_BitMask_t)g_CH_VhPioPin[unitId]);
ErrCode = DRV_CH_Pio_Set(PIO_GET_HANDLE(2,CH_PIO_CH_VH_HANDLEID), (STPIO_BitMask_t)g_CH_VhPioPin[unitId]);
#else
#endif
#if !defined(TIMIMG_ADJUSTMENT_CHANNEL)
//VK_TASK_Sleep(10); // stable time > 10ms
#endif
}
else
{
#if defined(CHIPSET_ST)
//ErrCode = DRV_CH_Pio_Clear(g_CHVhHandle[unitId], (STPIO_BitMask_t)g_CH_VhPioPin[unitId]);
ErrCode = DRV_CH_Pio_Clear(PIO_GET_HANDLE(2,CH_PIO_CH_VH_HANDLEID), (STPIO_BitMask_t)g_CH_VhPioPin[unitId]);
#else
#endif
}
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("drv_ch_pio_LnbVoltage(%d) : Error 0x%x \n" , ucPolar, ErrCode));
}
return ErrCode;
} /* end of drv_ch_Pio_Polarization */
int DRV_CH_Pio_SetPower(unsigned char ui8UnitId, __channel_power_t power)
{
if( (power!= CHANNEL_POWER_ON) && (power!= CHANNEL_POWER_OFF) )
{
return 0;
}
if( power == CHANNEL_POWER_ON )
{
#ifdef DRV_CH_PIO_DEBUG_PRINT
PrintError(("tuner power On \n\r"));
#endif
}
else
{
#ifdef DRV_CH_PIO_DEBUG_PRINT
PrintError(("tuner power Off \n\r"));
#endif
}
return 1;
} /* end of DRV_CH_Pio_SetPower */
#if 0
/*=============================================================================
Function : drv_ch_Demod_HWReset
Description : demodulator HW Reset
Input :
Output :
Return : Success if TRUE
=============================================================================*/
/*=============================================================================
Function : drv_ch_pio_HWReset
Description :
Input :
Output :
Return : TRUE if error, FALSE if success
=============================================================================*/
int drv_ch_pio_HWReset(unsigned char unitId)
{
#if 1
//if (power == CHANNEL_POWER_ON)
{
#if defined(ST_5105)
DRV_CH_Pio_Clear(g_CHHwResetHandle[unitId], PIO_BIT_6);
VK_TASK_Sleep(200);
DRV_CH_Pio_Set(g_CHHwResetHandle[unitId], PIO_BIT_6);
#endif
VK_TASK_Sleep(10);
}
return 0;
#else
ST_ErrorCode_t ErrCode , TotalError = DDI_CH_PIO_OK;
ErrCode = DRV_CH_Pio_Clear(g_hCHANNEL_PIOHandle2, (1<<DEMOD_RST_PIO_BIT));
VK_TASK_Sleep(10);//task_delay(ST_GetClocksPerSecond()/100); // delay > 10ms
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("drv_ch_pio_HWReset() : DRV_CH_Pio_Clear() Error : 0x%x \n" , ErrCode ));
TotalError |= ErrCode;
}
ErrCode = DRV_CH_Pio_Set(g_hCHANNEL_PIOHandle2, (1<<DEMOD_RST_PIO_BIT));
VK_TASK_Sleep(2);//task_delay(ST_GetClocksPerSecond()/500); // delay > 2ms
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("drv_ch_pio_HWReset() : DRV_CH_Pio_Set() Error : 0x%x \n" , ErrCode ));
TotalError |= ErrCode;
}
return TotalError;
#endif
} /* end of drv_ch_pio_HWReset */
#endif
int DRV_CH_Pio_HWReset(unsigned char unitId, unsigned char type)
{
switch(type)
{
case DDI_CHANNEL_TYPE_TER:
#if defined(CHIPSET_ST)
// sttbx_Print("drv_Demod_HWReset-[g_CHTerHwResetHandle[%d]:[%x]\n\r", unitId, g_CHTerHwResetHandle[unitId]);
DRV_CH_Pio_Clear(g_CHTerHwResetHandle[unitId], PIO_BIT_6);
VK_TASK_Sleep(20);
DRV_CH_Pio_Set(g_CHTerHwResetHandle[unitId], PIO_BIT_6);
VK_TASK_Sleep(20);
#endif
break;
case DDI_CHANNEL_TYPE_SAT:
#if defined(CHIPSET_ST)
#if defined(SUPPORT_SELECT_TS)
DRV_CH_Pio_Clear(g_CHHwResetHandle[unitId], PIO_BIT_6);
VK_TASK_Sleep(20);
DRV_CH_Pio_Set(g_CHHwResetHandle[unitId], PIO_BIT_6);
VK_TASK_Sleep(20);
#endif
#endif
break;
default:
break;
}
return 0;
} /* end of drv_Demod_HWReset */
/*=============================================================================
Function : drv_Demod_SetPower
Description : demodulator power On/Off
Input :
Output :
Return :Success if TRUE
=============================================================================*/
int DRV_CH_Demod_SetPower(unsigned char ui8UnitId, __channel_power_t power)
{
if(power!= CHANNEL_POWER_ON && power!= CHANNEL_POWER_OFF){
return 0;
}
if(power)
{
#ifdef DRV_CH_PIO_DEBUG_PRINT
PrintError(("demodulator power On \n\r"));
#endif
}
else
{
#ifdef DRV_CH_PIO_DEBUG_PRINT
PrintError(("demodulator power Off \n\r"));
#endif
}
return 1;
}/* end of drv_Demod_SetPower */
/*=============================================================================
Function : drv_ADC_Reset
Description : Reset ADC
=============================================================================*/
static void drv_ADC_Reset(unsigned char ui8UnitId)
{
// ADC Power Down Mode
VK_TASK_Sleep(2);
// ADC Normal Mode
}
int drv_ch_pio_InterruptEnable(void)
{
int ErrCode = 0;
#if 0
STPIO_Compare_t Compare;
Compare.CompareEnable = 1<<DEMOD_IRQ_PIO_BIT;
Compare.ComparePattern = 1<<DEMOD_IRQ_PIO_BIT;
ErrCode = STPIO_SetCompare(g_hCHANNEL_PIOIntHandle, &Compare);
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("drv_ch_pio_InterruptEnable() Error : STPIO_SetCompare(0x%x ) 0x%x \n" , g_hCHANNEL_PIOIntHandle , ErrCode ));
}
#endif
return ( ErrCode );
} /* end of drv_ch_pio_InterruptEnable */
int drv_ch_pio_InterruptDisable(void)
{
int ErrCode = 0;
#if 0//
STPIO_Compare_t Compare;
Compare.CompareEnable = 0;
Compare.ComparePattern = 0;
ErrCode = STPIO_SetCompare(g_hCHANNEL_PIOIntHandle, &Compare);
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("drv_ch_pio_InterruptDisable() Error : STPIO_SetCompare(0x%x ) 0x%x \n" , g_hCHANNEL_PIOIntHandle , ErrCode ));
}
#endif
return ( ErrCode );
} /* end of drv_ch_pio_InterruptDisable */
#if defined(SUPPORT_SELECT_TS)
/*=============================================================================
Function : drv_ch_pio_Select_TS
Description : Stream Selector
Input :
Output :
Return : Success if TRUE
=============================================================================*/
int DRV_CH_Pio_Select_TS( unsigned char unitId, unsigned long type)
{
int ErrCode;
unsigned char unitOtherId;
switch(type)
{
case DDI_CHANNEL_TYPE_TER:
#if defined(CHIPSET_ST)
ErrCode = DRV_CH_Pio_Clear(g_CHTerEnableHandle[unitId], PIO_BIT_2);
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("drv_ch_pio_Select_TS: Error : 0x%x \n" , ErrCode ));
}
VK_TASK_Sleep(10);
#if defined(NEO_S) || defined(NEO_ST)
unitOtherId = (unitId == 0)?1:0;
ErrCode = DRV_CH_Pio_Set(g_CHEnableHandle[unitOtherId], PIO_BIT_5);
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("drv_ch_pio_Select_TS: Error : 0x%x \n" , ErrCode ));
}
#endif
VK_TASK_Sleep(10);
#endif
break;
case DDI_CHANNEL_TYPE_SAT:
#if defined(CHIPSET_ST)
ErrCode = DRV_CH_Pio_Clear(g_CHEnableHandle[unitId], PIO_BIT_5);
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("drv_ch_pio_Select_TS: Error : 0x%x \n" , ErrCode ));
}
VK_TASK_Sleep(10);
#if defined(NEO_T) || defined(NEO_ST)
unitOtherId = (unitId == 0)?1:0;
ErrCode = DRV_CH_Pio_Set(g_CHTerEnableHandle[unitOtherId], PIO_BIT_2);
if(ErrCode != DDI_CH_PIO_OK){
PrintError(("drv_ch_pio_Select_TS: Error : 0x%x \n" , ErrCode ));
}
#endif
VK_TASK_Sleep(10);
#endif
break;
default:
break;
}
return ErrCode;
} /* end of drv_ch_Pio_Select_TS */
#endif
/* EOF */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -