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

📄 drv_ch_pio_com.c

📁 ST5100 driver files for ST chipset
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -