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

📄 wndw_ds_scrn.c

📁 一个比较好用的TW2835音视频芯片开发板的程序,
💻 C
📖 第 1 页 / 共 2 页
字号:
#include	"hdr.h"

//==================================================================================
#if defined(__4CH__)
U8 idata	wndw_ds_sc_fmt = SC_FMT_4CH;
#elif	defined(__16CH__)
U8 idata	wndw_ds_sc_fmt = SC_FMT_16CH;
#endif

//U8 idata	wndw_ds_sc_loss = SC_LOSS_BLAK;


//==================================================================================
//						Display wndwdow function description
//==================================================================================
void	SetWndwDsScOSDFmtChk(U8 _pth)
{
	U8 _t1_, _t2_;//, _t3_;

#if defined(__4CH__)
	if(wndw_ds_sc_fmt == SC_FMT_4CH)	_t1_ = 0x00;
	else	_t1_ = OSD_MIX;
	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_CHK_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_4CH_PB,_t1_,str_wndw_ds_wth_4pb);

	if(b_ds_wth_4pb)	_t2_ = OSD_CHK_BOX_CHK;
	else	_t2_ = OSD_CHK_BOX_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_CHK_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_4CH_PB,_t1_,_t2_);

	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_CHK_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_16CH_PB,OSD_MIX,OSD_CHK_BOX_BLK);

	if(wndw_ds_sc_fmt == SC_FMT_8CH)	_t1_ = 0x00;
	else	_t1_ = OSD_MIX;
	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_CHK_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_8CH_RC,_t1_,str_wndw_ds_wth_rc);

	if(b_ds_wth_rc)	_t2_ = OSD_CHK_BOX_CHK;
	else	_t2_ = OSD_CHK_BOX_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_CHK_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_8CH_RC,_t1_,_t2_);
#elif	defined(__16CH__)
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_CHK_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_4CH_PB,OSD_MIX,OSD_CHK_BOX_BLK);

	if(wndw_ds_sc_fmt == SC_FMT_16CH)	_t1_ = 0x00;
	else	_t1_ = OSD_MIX;
	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_CHK_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_16CH_PB,_t1_,str_wndw_ds_wth_16pb);

	if(b_ds_wth_16pb)	_t2_ = OSD_CHK_BOX_CHK;
	else	_t2_ = OSD_CHK_BOX_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_CHK_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_16CH_PB,_t1_,_t2_);

	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_CHK_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_8CH_RC,OSD_MIX,OSD_CHK_BOX_BLK);
#endif
}
//==================================================================================
void	SetWndwDsScOSDFmtRdo(U8 _pth)
{
	U8 _t1_;

	if(wndw_ds_sc_fmt == SC_FMT_1CH)	_t1_ = OSD_RDO_CHK;
	else	_t1_ = OSD_RDO_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_RDO_FM_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_1CH,0x00,_t1_);

	if(wndw_ds_sc_fmt == SC_FMT_4CH)	_t1_ = OSD_RDO_CHK;
	else	_t1_ = OSD_RDO_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_RDO_FM_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_4CH,0x00,_t1_);

#if defined(__4CH__)
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_RDO_FM_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_16CH,OSD_MIX,OSD_RDO_BLK);

	if(wndw_ds_sc_fmt == SC_FMT_8CH)	_t1_ = OSD_RDO_CHK;
	else	_t1_ = OSD_RDO_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_RDO_FM_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_8CH,0x00,_t1_);
#elif	defined(__16CH__)
	if(wndw_ds_sc_fmt == SC_FMT_16CH)	_t1_ = OSD_RDO_CHK;
	else	_t1_ = OSD_RDO_BLK;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_RDO_FM_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_16CH,0x00,_t1_);

	WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_RDO_FM_X,WNDW_DS_SC_RDO_FM_Y+SC_FMT_8CH,OSD_MIX,OSD_RDO_BLK);
#endif

	SetWndwDsScOSDFmtChk(_pth);
}
//==================================================================================
void	SetWndwDsScOSDFmt(U8 _pth)
{
//	U8 _t1_;

	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_RDO_FM_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_1CH,0x00,str_wndw_ds_full);
	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_RDO_FM_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_4CH,0x00,str_wndw_ds_quad);

#if defined(__4CH__)
	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_RDO_FM_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_16CH,OSD_MIX,str_wndw_ds_16ch);
	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_CHK_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_16CH_PB,OSD_MIX,str_wndw_ds_wth_16pb);
	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_RDO_FM_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_8CH,0x00,str_wndw_ds_psdo_8ch);
#elif	defined(__16CH__)
	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_CHK_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_4CH_PB,OSD_MIX,str_wndw_ds_wth_4pb);
	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_RDO_FM_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_16CH,0x00,str_wndw_ds_16ch);
	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_RDO_FM_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_8CH,OSD_MIX,str_wndw_ds_psdo_8ch);
	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_CHK_X+2,WNDW_DS_SC_RDO_FM_Y+SC_FMT_8CH_RC,OSD_MIX,str_wndw_ds_wth_rc);
#endif

	SetWndwDsScOSDFmtRdo(_pth);
}
//==================================================================================
//void	SetWndwDsScOSDRdoLs(U8 _pth)
//{
//	U8 _t1_, _t2_, _t3_;
//
//	if(wndw_ds_sc_fmt == SC_FMT_8CH)	_t1_ = OSD_MIX;
//	else	_t1_ = 0x00;
//
//	for(_t3_=0;_t3_<4;_t3_++){
//		if(_t3_ == wndw_ds_sc_loss)	_t2_ = OSD_RDO_CHK;
//		else	_t2_ = OSD_RDO_BLK;
//
//		WriteOSDFnt(_pth,MASTER,WNDW_DS_SC_RDO_LS_X,WNDW_DS_SC_RDO_LS_Y+_t3_,_t1_,_t2_);
//	}
//}
////==================================================================================
//void	SetWndwDsScOSDLoss(U8 _pth)
//{
//	U8 _t1_;
//
//	if(wndw_ds_sc_fmt == SC_FMT_8CH)	_t1_ = OSD_MIX;
//	else	_t1_ = 0x00;
//	
//	SetOSDGrp(_pth,WNDW_DS_SC_RDO_LS_X-1,WNDW_DS_SC_RDO_LS_Y,14,4,_t1_,str_wndw_grp_loss);
//
//	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_RDO_LS_X+2,WNDW_DS_SC_RDO_LS_Y,_t1_,str_wndw_ds_byps);
//	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_RDO_LS_X+2,WNDW_DS_SC_RDO_LS_Y+1,_t1_,str_wndw_ds_frz);
//	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_RDO_LS_X+2,WNDW_DS_SC_RDO_LS_Y+2,_t1_,str_wndw_ds_blak);
//	WriteOSDStr(_pth,MASTER,WNDW_DS_SC_RDO_LS_X+2,WNDW_DS_SC_RDO_LS_Y+3,_t1_,str_wndw_ds_blik);
//
//	SetWndwDsScOSDRdoLs(_pth);
//}
//==================================================================================
//==================================================================================
//void	InitWndwDsScVarLs(void)
//{
//	U8 _rdat_;
//	
////	_rdat_ = ReadAsicByte(MASTER,DVC_PG1,0x05);
////	_rdat_ = (_rdat_ & 0xc0)>>6;
//	_rdat_ = GetAsicVar8Type(MASTER,DVC_PG1,0x05,0x62);
//	wndw_ds_sc_loss = _rdat_;
//}
//==================================================================================
void	ChngWndwDsScFmtLv(void)
{
	U8 _dvc_, _ch_;
	U8 _t1_;//, _t2_=0;
//	U16 _dly_;

	for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
		SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
		SetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),0x30,0x10);			//... FUNC_MODE=1
	}

//	for(_dly_=0;_dly_<30000;_dly_++){											//... check finishing strobe for max 30000 times
//		_t1_=0;
//		_t1_ |= GetAsicFlgType(MASTER,DVC_PG1,0x04,0x0f);
//#if	defined(__16CH__)
//		_t1_ |= GetAsicFlgType(SLAVE1,DVC_PG1,0x04,0x0f);
//		_t1_ |= GetAsicFlgType(SLAVE2,DVC_PG1,0x04,0x0f);
//		_t1_ |= GetAsicFlgType(SLAVE3,DVC_PG1,0x04,0x0f);
//#endif
//		if(_t1_==0)	break;
//	}

//	WaitChStrbDoneX(0x0f);				//... check for four channels of each devices
	WaitChStrbDoneX(0xffff);			//... check for four channels of each devices

	for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
		SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
		SetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT6,0x00);			//... POP_UP_EN=0
	}

	for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
		SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
		if(wndw_ds_sc_fmt == SC_FMT_1CH){
			if(_t1_ == wndw_pop_crnt_ch)	SetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT6,BIT6);			//... POP_UP_EN=1
			SetChFl(PTH_X,_dvc_,_ch_);
		}
		else if(wndw_ds_sc_fmt == SC_FMT_4CH){
			if((_t1_&0x0c) == (wndw_pop_crnt_ch&0x0c))	SetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),BIT6,BIT6);	//... POP_UP_EN=1
			if(b_ds_wth_4pb)	SetChNine(PTH_X,_dvc_,_ch_,_ch_);
			else	SetChQd(PTH_X,_dvc_,_ch_,_ch_);
		}
//#if	defined(__4CH__)
//		else if(wndw_ds_sc_fmt == SC_FMT_4CH_PB){
//			SetChNine(PTH_X,_dvc_,_ch_,_ch_);
//		}
//#elif	defined(__16CH__)
#if	defined(__16CH__)
		else if(wndw_ds_sc_fmt == SC_FMT_16CH){
			if(b_ds_wth_16pb){
				if(_t1_ < 14)	SetCh36(PTH_X,_dvc_,_ch_,_t1_);
				else		SetCh36(PTH_X,_dvc_,_ch_,_t1_+2);
			}
			else	SetChPIP(PTH_X,_dvc_,_ch_,_t1_);
		}
#endif
	}

	for(_t1_=0;_t1_<cmn_max_ch;_t1_++){
		SetCrntDvcCh(_t1_,&_dvc_,&_ch_);
		SetAsicFlgType(_dvc_,DVC_PG1,0x10+(_ch_<<3),0x30,0x00);			//... FUNC_MODE=0
	}
}
//==================================================================================
#if defined(__4CH__)

void	InitWndwDsScFmtPsd8Ch(U8 _tgl)
{
	U8 _t1_;

	if(_tgl){
		WriteAsicByte(MASTER,DVC_PG0,0x43,0x4f);			//... GNTIME=3, OSTIME=3
		WriteAsicByte(MASTER,DVC_PG0,0x45,0x10);			//... 
		WriteAsicByte(MASTER,DVC_PG0,0x4d,0x00);			//... 
		WriteAsicByte(MASTER,DVC_PG0,0x51,0x88);			//... 
		WriteAsicByte(MASTER,DVC_PG0,0x53,0x40);			//... 
//		SetAsicFlgType(MASTER,DVC_PG0,0xf8,BIT5,BIT5);							//... enable AUTO_BGND

		if(b_ch_src == CH_SRC_LV)
			SetAsicFlgType(MASTER,DVC_PG1,0x01,0x03,0x00);			//... STRB_FLD=0
		else
			SetAsicFlgType(MASTER,DVC_PG1,0x01,0x03,0x02);			//... STRB_FLD=2

//		//... y path ...................................
//		if(b_rc_fm_type == FM_TYPE_CIF){
//			for(_t1_=0;_t1_<4;_t1_++)
//				SetAsicFlgType(MASTER,DVC_PG1,0x60+_t1_*3,0x30,0x10);			//... FUNC_MODE=1
//
////			if(wndw_rc_fm_cif_type != CIF_TYPE_FL){
////				wndw_rc_fm_cif_type = CIF_TYPE_FL;
////
////				SetAsicFlgType(MASTER,DVC_PG1,0x51,BIT6,BIT6);
//////				for(_t1_=0;_t1_<4;_t1_++){
//////					SetChQdPos(PTH_Y,MASTER,_t1_,_t1_);
//////					SetSclRto(PTH_Y,MASTER,_t1_,0x12,0x11);
//////				}
////			}
//		}
//		else{
//			if(wndw_rc_fm_mux_type != MUX_TYPE_FL){
//				wndw_rc_fm_mux_type = MUX_TYPE_FL;
//				SetAsicFlgType(MASTER,DVC_PG1,0x56,0xf0,0x00);		//... MUX_MODE=0,TRIG_MODE=0,MUX_FLD=0
//			}
//		}
		wndw_rc_fm_type = CIF_TYPE_FL;						//... just limitation for promotion
		SetWndwRcFmType();										//... just limitation for promotion
	}
	else{
		WriteAsicByte(MASTER,DVC_PG0,0x43,0x45);			//... GNTIME=1, OSTIME=1
		WriteAsicByte(MASTER,DVC_PG0,0x45,0xd0);			//... 
		WriteAsicByte(MASTER,DVC_PG0,0x4d,0x0f);			//... 
		WriteAsicByte(MASTER,DVC_PG0,0x51,0x80);			//... 
		WriteAsicByte(MASTER,DVC_PG0,0x53,0x00);			//... 
//		SetAsicFlgType(MASTER,DVC_PG0,0xf8,BIT5,0x00);							//... disable AUTO_BGND
		for(_t1_=0;_t1_<4;_t1_++)
			SetAsicFlgType(MASTER,DVC_PG0,0x0d+0x10*_t1_,BIT3,0x00);		//... ANA_SW=0

		SetAsicFlgType(MASTER,DVC_PG1,0x01,0x03,0x02);			//... STRB_FLD=2

		//... y path ...................................
//		if(b_rc_fm_type == FM_TYPE_CIF){
		if((wndw_rc_fm_type == CIF_TYPE_FR)||(wndw_rc_fm_type == CIF_TYPE_FL)){
			for(_t1_=0;_t1_<4;_t1_++){
				SetAsicFlgType(MASTER,DVC_PG1,0x60+_t1_*3,0x30,0x00);			//... FUNC_MODE=0
//				SetAsicFlgType(MASTER,DVC_PG1,0x61+_t1_*3,BIT2,0x00);			//... BLANK_EN=0
			}
		}
		else{
			SetAsicFlgType(MASTER,DVC_PG1,0x56,BIT6,BIT6);				//... TRIG_MODE=1
		}
	}
}
//==================================================================================
void	SetWndwDsScFmtPsd8Ch(void)
{
	U8 _t1_;

	for(_t1_=0;_t1_<4;_t1_++){
		SetChNinePos(PTH_X,MASTER,_t1_,_t1_);
		SetChNinePos(PTH_PB,MASTER,_t1_,_t1_+5);

		if(b_ch_src == CH_SRC_PB){
//			if(b_rc_fm_type == FM_TYPE_CIF){
			if((wndw_rc_fm_type == CIF_TYPE_FR)||(wndw_rc_fm_type == CIF_TYPE_FL)){
				SetSclRto(PTH_PB,MASTER,_t1_,0x23,0x23);
//				if(wndw_rc_fm_cif_type == CIF_TYPE_FR){
				if(wndw_rc_fm_type == CIF_TYPE_FR){
					SetAsicFlgType(MASTER,DVC_PG1,0x12+(_t1_<<3),BIT5,0x00);					//... FIELD_OP=1
					SetAsicFlgType(MASTER,DVC_PG1,0x15+(_t1_<<3),BIT5,0x00);					//... FIELD_OP=1
				}
				else{
					SetAsicFlgType(MASTER,DVC_PG1,0x12+(_t1_<<3),BIT5,BIT5);					//... FIELD_OP=1
					SetAsicFlgType(MASTER,DVC_PG1,0x15+(_t1_<<3),BIT5,BIT5);					//... FIELD_OP=1
				}
			}
			else{
				SetSclRto(PTH_PB,MASTER,_t1_,0x13,0x23);
				SetAsicFlgType(MASTER,DVC_PG1,0x12+(_t1_<<3),BIT5,BIT5);					//... FIELD_OP=1
				SetAsicFlgType(MASTER,DVC_PG1,0x15+(_t1_<<3),BIT5,BIT5);					//... FIELD_OP=1
			}

			//... DM_PATH_SEL捞 角力肺 官差绢 乐澜( 0: B, 1: A)
			//... live path
			SetAsicFlgType(MASTER,DVC_PG1,0x10+(_t1_<<3),0x30|BIT3|BIT2,0x10|BIT3|BIT2);	//... FUNC_MODE=1,DM_PATH_SEL=1,PB_PATH_EN=1
//			SetAsicFlgType(MASTER,DVC_PG2,0x60+(_t1_<<3),0x80,0x00);	//... MDBOX_EN=0
			//... pb path
			SetAsicFlgType(MASTER,DVC_PG1,0x13+(_t1_<<3),0xb0|BIT3|BIT2,0x90|BIT2);			//... CHENA=1,FUNC_MODE=1,DM_PATH_SEL=0,PB_PATH_EN=1
		}
		else{
			SetSclRto(PTH_X,MASTER,_t1_,0x13,0x23);

			//... live path
			SetAsicFlgType(MASTER,DVC_PG1,0x10+(_t1_<<3),0x30|BIT3|BIT2,0x10);			//... FUNC_MODE=1,DM_PATH_SEL=0,PB_PATH_EN=0
			SetAsicFlgType(MASTER,DVC_PG1,0x12+(_t1_<<3),BIT5,BIT5);					//... FIELD_OP=1
//			SetAsicFlgType(MASTER,DVC_PG2,0x60+(_t1_<<3),0x80,0x00);	//... MDBOX_EN=0
			//... pb path
			SetAsicFlgType(MASTER,DVC_PG1,0x13+(_t1_<<3),0xb0|BIT3|BIT2,0x90);			//... CHENA=1,FUNC_MODE=1,DM_PATH_SEL=0,PB_PATH_EN=0
			SetAsicFlgType(MASTER,DVC_PG1,0x15+(_t1_<<3),BIT5,BIT5);					//... FIELD_OP=1
		}
	}
}
//==================================================================================
void	SetWndwDsScFmtPsd8ChRc(void)
{
	U8 _t1_;
	
	if(b_ds_wth_rc){
		//... y path ...................................
//		SetAsicFlgType(MASTER,DVC_PG1,0x61+_t1_*3,BIT2,0x00);			//... BLANK_EN=0

//		if(b_rc_fm_type == FM_TYPE_CIF){
		if((wndw_rc_fm_type == CIF_TYPE_FR)||(wndw_rc_fm_type == CIF_TYPE_FL)){
			for(_t1_=0;_t1_<4;_t1_++)
				SetAsicFlgType(MASTER,DVC_PG1,0x60+_t1_*3,0x30,0x10);			//... FUNC_MODE=1

//			if(wndw_rc_fm_cif_type != CIF_TYPE_FL){
//				wndw_rc_fm_cif_type = CIF_TYPE_FL;
//
//				SetAsicFlgType(MASTER,DVC_PG1,0x51,BIT6,BIT6);
////				for(_t1_=0;_t1_<4;_t1_++){
////					SetChQdPos(PTH_Y,MASTER,_t1_,_t1_);
////					SetSclRto(PTH_Y,MASTER,_t1_,0x12,0x11);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -