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

📄 wndw_ds_src.c

📁 TECHWELL 之tw2835 四画面合一之驱动代码,CCIR656输出,KEIL C51 平台编译,
💻 C
📖 第 1 页 / 共 2 页
字号:
#include	"hdr.h"

//==================================================================================
//						Display wndwdow function description
//==================================================================================
#if	defined(__16CH__)
U8	GetWndwDsSrPbOfst(void)
{
	U8 _t1_;

	if(cmn_rc_md == RC_MD_480_FPS){
		if(wndw_crnt_dvc == MASTER)	_t1_ = 0;
		else if(wndw_crnt_dvc == SLAVE1)	_t1_ = 4;
		else if(wndw_crnt_dvc == SLAVE2)	_t1_ = 8;
		else if(wndw_crnt_dvc == SLAVE3)	_t1_ = 12;
	}
	else if(cmn_rc_md == RC_MD_240_FPS){
		if(wndw_crnt_dvc < SLAVE2)	_t1_ = 0;
		else	_t1_ = 8;
	}
	else if(cmn_rc_md == RC_MD_120_FPS)	_t1_ = 0;

	return	_t1_;
}
#endif
//==================================================================================
//==================================================================================
void	RunWndwDsSrOSDArwWn(U8 _pth, U8 _osd_pos_x, U8 _osd_pos_y)
{
	U8 _t1_;

	if(wndw_ds_sc_fmt == SC_FMT_8CH)	_t1_ = OSD_MIX;
	else	_t1_ = 0x00;

	RunMseOnOSDH(_pth|_t1_,_osd_pos_x,_osd_pos_y,WNDW_DS_SR_DEC_WN_X,WNDW_DS_SR_INC_WN_X,WNDW_DS_SR_NUM_WN_Y,MSE_ON_OSD_DS_SR_WN);
}
//==================================================================================
void	RunWndwDsSrOSDArwLv(U8 _pth, U8 _osd_pos_x, U8 _osd_pos_y)
{
	U8 _t1_;
	
//	if((b_ch_src == CH_SRC_PB)||(wndw_ds_sc_fmt == SC_FMT_8CH))	_t1_ = OSD_MIX;
	if((GetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),BIT2))||(wndw_ds_sc_fmt == SC_FMT_8CH))	//... (PB_PATH_EN=1)||(8ch)
		_t1_ = OSD_MIX;
	else	_t1_ = 0x00;
	
	RunMseOnOSDH(_pth|_t1_,_osd_pos_x,_osd_pos_y,WNDW_DS_SR_DEC_LV_X,WNDW_DS_SR_INC_LV_X,WNDW_DS_SR_NUM_LV_Y,MSE_ON_OSD_DS_SR_LV);
}
//==================================================================================
void	RunWndwDsSrOSDArwPb(U8 _pth, U8 _osd_pos_x, U8 _osd_pos_y)
{
	U8 _t1_;
/*
#if	defined(__4CH__)
	if((b_ch_src == CH_SRC_LV)||(wndw_ds_sc_fmt == SC_FMT_8CH)||(GLBL_PB_MD == PB_MD_FLTNG))	_t1_ = OSD_MIX;
#elif	defined(__16CH__)
	if((b_ch_src == CH_SRC_LV)||(wndw_ds_sc_fmt == SC_FMT_8CH))	_t1_ = OSD_MIX;
#endif
//	*/
//	if((b_ch_src == CH_SRC_LV)||(wndw_ds_sc_fmt == SC_FMT_8CH))	_t1_ = OSD_MIX;
	if((!(GetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),BIT2)))||(wndw_ds_sc_fmt == SC_FMT_8CH))	//... (PB_PATH_EN=0)||(8ch)
		_t1_ = OSD_MIX;
	else	_t1_ = 0x00;
	
	RunMseOnOSDH(_pth|_t1_,_osd_pos_x,_osd_pos_y,WNDW_DS_SR_DEC_PB_X,WNDW_DS_SR_INC_PB_X,WNDW_DS_SR_NUM_PB_Y,MSE_ON_OSD_DS_SR_PB);
}
//==================================================================================
//==================================================================================
void	SetWndwDsSrOSDWn(U8 _pth)
{
	U8 _t1_, _t2_;

	if(wndw_ds_sc_fmt == SC_FMT_8CH)	_t2_ = OSD_MIX;
	else	_t2_ = 0x00;

	WriteOSDStr(_pth,MASTER,WNDW_DS_SR_RDO_X,WNDW_DS_SR_NUM_WN_Y,_t2_,str_wndw_ch_wn);

#if	defined(__16CH__)
	if(wndw_pop_crnt_ch < 10)	_t1_ = OSD_CLR;
	else	_t1_ = _t2_;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_NUM_WN_X-1,WNDW_DS_SR_NUM_WN_Y,_t1_,0x11);
#endif
	if(wndw_pop_crnt_ch > 9)		_t1_ = wndw_pop_crnt_ch+6;			//... +6 -> +0x10 -10;
	else	_t1_ = wndw_pop_crnt_ch+0x10;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_NUM_WN_X,WNDW_DS_SR_NUM_WN_Y,_t2_,_t1_);
}
//==================================================================================
//==================================================================================
//U8	GetWndwDsSrLv(void)
//{
//	U8 _t1_;
//
//	_t1_ = ReadAsicByte(wndw_crnt_dvc,DVC_PG0,0x80+0x10*wndw_crnt_ch);
//
//	return	(_t1_&0x03);
//}
////==================================================================================
//void	SetWndwDsSrLv(U8 _data)
//{
//	
////	SetDsSrFuncMode(_pth,wndw_crnt_dvc,wndw_crnt_ch,NULL,CH_FUNC_STRB);
////	SetAsicFlgType(wndw_crnt_dvc,DVC_PG0,0x22+0x40*wndw_crnt_ch,0x03,_data);
//	SetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),0x30,0x10);		//... FUNC_MODE=1
//	SetAsicFlgType(wndw_crnt_dvc,DVC_PG0,0x80+0x10*wndw_crnt_ch,0xc0,_data<<6);
//	
////	SetDsSrFuncMode(_pth,wndw_crnt_dvc,wndw_crnt_ch,NULL,CH_FUNC_NRML);
//	SetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),0x30,0x00);		//... FUNC_MODE=0
//}
//==================================================================================
void	SetWndwDsSrOSDLvNum(U8 _pth, U8 _data)
{
	U8 _t1_;
#if	defined(__16CH__)
	U8 _t2_;
#endif
	
//	if((b_ch_src == CH_SRC_PB)||(wndw_ds_sc_fmt == SC_FMT_8CH))	_t1_ = OSD_MIX;
//	else	_t1_ = 0x00;
	if((GetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),BIT2))||(wndw_ds_sc_fmt == SC_FMT_8CH))	//... (PB_PATH_EN=1)||(8ch)
		_t1_ = OSD_MIX;
	else	_t1_ = 0x00;
	
#if	defined(__4CH__)
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_NUM_LV_X,WNDW_DS_SR_NUM_LV_Y,_t1_,_data+0x10);
#elif	defined(__16CH__)
	_data += (wndw_pop_crnt_ch&0x0c);
	if(_data > 9)	_t2_ = _data+6;			//... +6 -> +0x10 -10;
	else	_t2_ = _data+0x10;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_NUM_LV_X,WNDW_DS_SR_NUM_LV_Y,_t1_,_t2_);
	if(_data < 10)	_t1_ = OSD_CLR;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_NUM_LV_X-1,WNDW_DS_SR_NUM_LV_Y,_t1_,0x11);
#endif
}
//==================================================================================
void	SetWndwDsSrOSDLv(U8 _pth)
{
	U8 _t1_;//, _t2_;
	
	WriteOSDStr(_pth,MASTER,WNDW_DS_SR_RDO_X+2,WNDW_DS_SR_RDO_LV_Y,0x00,str_wndw_ch_live_vid);

	if(wndw_ds_sc_fmt == SC_FMT_8CH){
		if(b_ch_src == CH_SRC_LV)	_t1_ = OSD_RDO_CHK;
		else	_t1_ = OSD_RDO_BLK;
	}
	else{
	//	if(b_ch_src == CH_SRC_LV){
		if(!(GetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),BIT2)))			//... PB_PATH_EN=0
			_t1_ = OSD_RDO_CHK;
		else	_t1_ = OSD_RDO_BLK;
	}
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_RDO_X,WNDW_DS_SR_RDO_LV_Y,0x00,_t1_);

//	_t1_ = GetWndwDsSrLv();
	_t1_ = GetAsicVar8Type(wndw_crnt_dvc,DVC_PG0,0x80+0x10*wndw_crnt_ch,0x62);
	SetWndwDsSrOSDLvNum(_pth,_t1_);
}
//==================================================================================
//==================================================================================
//U8	GetWndwDsSrPb(void)
//{
//	U8 _t1_;
//
////	if(b_jp_4pb == ON){
////		_t1_ = ReadAsicByte(MASTER,DVC_PG0,0x39);
////		_t1_ &= (0x03<<(wndw_crnt_ch<<1));
////		_t1_ >>= (wndw_crnt_ch<<1);
////	}
////	else{
//		_t1_ = ReadAsicByte(wndw_crnt_dvc,DVC_PG1,0x16+(wndw_crnt_ch<<3));
//		_t1_ &= 0x0f;
////	}
//
//	return	_t1_;
//}
////==================================================================================
//void	SetWndwDsSrPb(U8 _data)
//{
//	U8 _rdat_;
//
////	if(b_jp_4pb == ON){
////		_rdat_ = ReadAsicByte(MASTER,DVC_PG0,0x39);
////		_rdat_ &= ~(0x03<<(wndw_crnt_ch<<1));
////		_rdat_ |= (_data<<(wndw_crnt_ch<<1));
////		WriteAsicByte(MASTER,DVC_PG0,0x39,_rdat_);
////	}
////	else{
//		_rdat_ = ReadAsicByte(wndw_crnt_dvc,DVC_PG1,0x16+(wndw_crnt_ch<<3));
//		WriteAsicByte(wndw_crnt_dvc,DVC_PG1,0x16+(wndw_crnt_ch<<3),(_rdat_ & ~0x0f)|_data);
////	}
//}
//==================================================================================
void	SetWndwDsSrOSDPbNum(U8 _pth, U8 _data)
{
	U8 _t1_, _t2_;
	
//	if((b_ch_src == CH_SRC_LV)||(wndw_ds_sc_fmt == SC_FMT_8CH))	_t1_ = OSD_MIX;
//	else	_t1_ = 0x00;
	if((!(GetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),BIT2)))||(wndw_ds_sc_fmt == SC_FMT_8CH))	//... (PB_PATH_EN=0)||(8ch)
		_t1_ = OSD_MIX;
	else	_t1_ = 0x00;
	
#if	defined(__16CH__)
	if(_data < 10)	_t2_ = OSD_CLR;
	else	_t2_ = _t1_;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_NUM_PB_X-1,WNDW_DS_SR_NUM_PB_Y,_t2_,0x11);
#endif
	if(_data > 9)		_t2_ = _data+6;			//... +6 -> +0x10 -10;
	else	_t2_ = _data+0x10;
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_NUM_PB_X,WNDW_DS_SR_NUM_PB_Y,_t1_,_t2_);
}
//==================================================================================
void	SetWndwDsSrOSDPb(U8 _pth)
{
	U8 _t1_;//, _t2_;
///*
//#if	defined(__4CH__)
//	if(GLBL_PB_MD == PB_MD_FLTNG)	_t2_ = OSD_MIX;
//	else	_t2_ = 0x00;
//#elif	defined(__16CH__)
//	_t2_ = 0x00;
//#endif
////	*/
//	_t2_ = 0x00;

	WriteOSDStr(_pth,MASTER,WNDW_DS_SR_RDO_X+2,WNDW_DS_SR_RDO_PB_Y,0x00,str_wndw_ch_pb);

	if(wndw_ds_sc_fmt == SC_FMT_8CH){
		if(b_ch_src == CH_SRC_PB)	_t1_ = OSD_RDO_CHK;
		else	_t1_ = OSD_RDO_BLK;
	}
	else{
		if(GetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),BIT2))			//... PB_PATH_EN=1
			_t1_ = OSD_RDO_CHK;
		else	_t1_ = OSD_RDO_BLK;
	}
	
	WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_RDO_X,WNDW_DS_SR_RDO_PB_Y,0x00,_t1_);

//	_t1_ = GetWndwDsSrPb();
	_t1_ = GetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x16+(wndw_crnt_ch<<3),0x0f);
	SetWndwDsSrOSDPbNum(_pth,_t1_);
}
//==================================================================================
//==================================================================================
//U8	GetWndwDsSrEnh(void)
//{
//	return	GetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x11+(wndw_crnt_ch<<3),BIT3);
//}
////==================================================================================
//void	SetWndwDsSrEnh(U8 _tgl)
//{
////	SetDsSrCtrl(_pth,wndw_crnt_dvc,wndw_crnt_ch,BIT3,_tgl);
//	SetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x11+(wndw_crnt_ch<<3),BIT3,_tgl<<3);
//}
//==================================================================================
void	SetWndwDsSrOSDEnhChk(U8 _pth)
{
	U8 _t1_;
	
	_t1_ = GetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x11+(wndw_crnt_ch<<3),BIT3);
	if(_t1_ == OFF)		_t1_ = OSD_CHK_BOX_BLK;
	else	_t1_ = OSD_CHK_BOX_CHK;
	
	if(wndw_ds_sc_fmt == SC_FMT_8CH)
		WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_CHK_X,WNDW_DS_SR_CHK_Y,OSD_MIX,_t1_);
	else
		WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_CHK_X,WNDW_DS_SR_CHK_Y,0x00,_t1_);
}
//==================================================================================
void	SetWndwDsSrOSDEnh(U8 _pth)
{
	U8 _t1_;//, _t2_;
	
	if(wndw_ds_sc_fmt == SC_FMT_8CH)	_t1_ = OSD_MIX;
	else	_t1_ = 0x00;
	
	WriteOSDStr(_pth,MASTER,WNDW_DS_SR_CHK_X+2,WNDW_DS_SR_CHK_Y,_t1_,str_wndw_ch_en_enh);

////	_t1_ = GetWndwDsSrEnh();
//	_t1_ = GetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x11+(wndw_crnt_ch<<3),BIT3)^BIT3;
//	if(_t1_ == OFF)		_t1_ = OSD_CHK_BOX_BLK;
//	else	_t1_ = OSD_CHK_BOX_CHK;
//	WriteOSDFnt(_pth,MASTER,WNDW_DS_SR_CHK_X,WNDW_DS_SR_CHK_Y,_t2_,_t1_);
	
	SetWndwDsSrOSDEnhChk(_pth);
}
//==================================================================================
//==================================================================================
//void	SelWndwDsSrSrc(void)
//{
//	U8 _t1_;
//
//	if(wndw_ds_sc_fmt == SC_FMT_8CH){
//		if(b_ch_src == CH_SRC_PB){
//			SetAsicFlgType(MASTER,DVC_PG1,0x01,0x03,0x02);									//... STRB_FLD=2
////			SetAsicFlgType(MASTER,DVC_PG1,0x16,BIT7,BIT7);									//... PB_AUTO_EN=1
//		}
//		else{
//			SetAsicFlgType(MASTER,DVC_PG1,0x01,0x03,0x00);									//... STRB_FLD=0
////			SetAsicFlgType(MASTER,DVC_PG1,0x16,BIT7,0x00);									//... PB_AUTO_EN=0
//		}
//	}
//	else{
//	//	SetDsSrFuncMode(_pth,wndw_crnt_dvc,wndw_crnt_ch,NULL,CH_FUNC_STRB);
//		SetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),0x30,0x10);		//... FUNC_MODE=1
//		WaitChStrbDoneX(BIT0<<wndw_crnt_ch);
//	
//		if(b_ch_src == CH_SRC_LV)	_t1_ = 0x00;
//		else	_t1_ = BIT2;//BIT0<<wndw_crnt_ch;
//	//	SetAsicFlgType(wndw_crnt_dvc,DVC_PG0,0x38,BIT0<<wndw_crnt_ch,_t1_);
//		SetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),BIT2,_t1_);		//... PB_PATH_EN=_t1_
//		
//	//	if((b_ch_src == CH_SRC_LV)||(b_jp_4pb == ON))
//	//		SetDsSrFuncMode(_pth,wndw_crnt_dvc,wndw_crnt_ch,NULL,CH_FUNC_NRML);	
//		if(b_ch_src == CH_SRC_LV)
//			SetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),0x30,0x00);		//... FUNC_MODE=0
//	}
//}
//==================================================================================
//==================================================================================
void	CreateWndwDsSr(U8 _pth)
{
//	b_status_wndw = ON;
	b_cmn_wndw_mn = ON;

	WriteOSDClr(_pth,MASTER,WNDW_DS_SR_POS_X,WNDW_DS_SR_POS_Y,WNDW_DS_SR_L,WNDW_DS_SR_H);
	SetOSDWndw(_pth,OSD_WNDW_TYPE_MAIN,WNDW_DS_SR_POS_X,WNDW_DS_SR_POS_Y,WNDW_DS_SR_L,WNDW_DS_SR_H,str_wndw_ttl_ch_stp);

//	if(wndw_ds_sc_fmt != SC_FMT_8CH){
////		if(GetAsicFlgType(wndw_crnt_dvc,DVC_PG0,0x38,BIT0<<wndw_crnt_ch) == OFF)	b_ch_src = CH_SRC_LV;
//		if(GetAsicFlgType(wndw_crnt_dvc,DVC_PG1,0x10+(wndw_crnt_ch<<3),BIT2) == OFF)	b_ch_src = CH_SRC_LV;
//		else	b_ch_src = CH_SRC_PB;
//	}

	mse_flg_on_osd = MSE_ON_OSD_DS_SR_WN|MSE_ON_OSD_DS_SR_LV|MSE_ON_OSD_DS_SR_PB;
	
	RunWndwDsSrOSDArwWn(_pth,0,0);
	SetWndwDsSrOSDWn(_pth);
	SetOSDGrp(_pth,WNDW_DS_SR_RDO_X-1,WNDW_DS_SR_RDO_LV_Y,16,4,0x00,str_wndw_grp_src);
	RunWndwDsSrOSDArwLv(_pth,0,0);
	SetWndwDsSrOSDLv(_pth);
	RunWndwDsSrOSDArwPb(_pth,0,0);
	SetWndwDsSrOSDPb(_pth);
	SetWndwDsSrOSDEnh(_pth);
}
//==================================================================================
void	RunWndwDsSrDec(U8 _pth, U8 _osd_pos_y)

⌨️ 快捷键说明

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