📄 wndw_ds_scrn.c
字号:
#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 + -