//============================================================== void F_Eng1EntertSet(void) { switch(R_Mode) { case 0: R_Mode=1; if(EE_Read(EE_Unit)!=ChangeUnitFlg) { // 切換公英制 需重新清除相關 eeprom F_EepromClear_2(); EE_Write(EE_SaveUserInit,1); } break; //============= case 1: R_Mode=2; F_Write2Byte(EE_WheelSize_L,R_WheelSize); break; //============= case 2: R_Mode=3; if(ChangeUnitFlg) EE_Write(EE_SpeedMinMile,R_SpeedMin); else EE_Write(EE_SpeedMinKm,R_SpeedMin); break; //============= case 3: R_Mode=4; if(ChangeUnitFlg) EE_Write(EE_SpeedMaxMile,R_SpeedMax); else EE_Write(EE_SpeedMaxKm,R_SpeedMax); break; //============= case 4: R_Mode=5; EE_Write(EE_IncMax,R_IncMax); break; //============= case 5: R_Mode=0; EE_Write(EE_IncZeroAdr,R_IncZeroAdr); if(IncUpDownFlg==1) { R_IncMaxAd = R_IncCarryAd; } else { R_IncMinAd = R_IncCarryAd; } F_IncFinsh(); break; } }
//======================== void F_GraphSpeedInc(void) { unsigned char SpeedAdrTemp,IncAdrTemp; switch(R_PorgMode) { case User1Val: SpeedAdrTemp=User_1_SpeedAdrVal; IncAdrTemp=User_1_IncAdrVal; break; //============ case User2Val: SpeedAdrTemp=User_2_SpeedAdrVal; IncAdrTemp=User_2_IncAdrVal; break; //============ case User3Val: SpeedAdrTemp=User_3_SpeedAdrVal; IncAdrTemp=User_3_IncAdrVal; break; //============ } EE_Write(SpeedAdrTemp+R_ProgramIndex,R_User_SetSpeed); EE_Write(IncAdrTemp+R_ProgramIndex,R_User_SetInc); //=========== R_ProgramIndex++; if(R_ProgramIndex>=30) { R_ProgramIndex=0; R_Mode=0; } else { R_User_SetSpeed=EE_Read(SpeedAdrTemp+R_ProgramIndex); R_User_SetInc=EE_Read(IncAdrTemp+R_ProgramIndex); //F_ChangeGraphInc(R_ProgramIndex,R_User_SetInc); //F_ChangeGraphSpeed(R_ProgramIndex,R_User_SetSpeed); } }
BYTE CheckAndSetDecoderScaler( void ) { BYTE mode; //0 = NTSC(M), 1 = PAL (B,D,G,H,I), ... struct DEC_VIDEO_TIME_TABLE_s *pVideoTable; struct SCALER_TIME_TABLE_s *pScaler; WORD hActive,vActive; BYTE hStart, vStart; BYTE fScale; /*check video signal */ if ( DecoderCheckVDLOSS(100) ) { ePuts("\n\rCheckAndSetDecoderScaler VDLOSS"); DecoderFreerun(DECODER_FREERUN_60HZ); return( 1 ); } /*get standard */ mode = DecoderCheckSTD(100); if ( mode == 0x80 ) { ePrintf("\n\rCheckAndSetDecoderScaler NoSTD"); DecoderFreerun(DECODER_FREERUN_60HZ); return( 2 ); } mode >>= 4; InputSubMode = mode; //save sub mode. if(mode >= 7) { DecoderFreerun(DECODER_FREERUN_60HZ); return 3; } /* link table */ pVideoTable = &TW8836_DEC_TABLE[mode]; /* read scale mode. 0:overscan(default), 1:full */ fScale = EE_Read(EEP_INPUT_DEC); //dPrintf("\n\rCheckAndSetDecoderScaler mode:%bd",mode); //dPrintf(" %dx%d", pVideoTable->hActive,pVideoTable->vActive); //dPrintf(" hDelay:%bd vDelay:%bd", pVideoTable->hDelay,pVideoTable->vDelay); //if(fScale==0)/*ANALOG_OVERSCAN*/ // dPrintf(" hOverScan:%bd vOverScan:%bd", pVideoTable->hOverScan,pVideoTable->vOverScan); hStart = pVideoTable->hDelay; hActive = pVideoTable->hActive; vStart = pVideoTable->vDelay; vActive = pVideoTable->vActive; if(fScale==0) { /*ANALOG_OVERSCAN*/ hStart += pVideoTable->hOverScan; hActive -= (pVideoTable->hOverScan*2); vStart += pVideoTable->vOverScan; vActive -= (pVideoTable->vOverScan *2); } /* set decoder output crop */ DecoderSetOutputCrop(hStart,hActive,vStart,vActive); /* set scaler */ ScalerSetLineBufferSize(hActive); ScalerSetHScale(hActive); ScalerSetVScale(vActive); ScalerSet_vDE_value(vStart); #if 0 //BK150717 scaler_set_output(hActive,vActive,vStart,0); #endif /*scaler input clock polarity */ InputSetClockPolarity(pVideoTable->pol); /*black level for NTSC */ if(mode==0) WriteTW88(REG10C, ReadTW88(REG10C) | 0x10); else WriteTW88(REG10C, ReadTW88(REG10C) & ~0x10); /* search scaler table. If success, overwrite */ #ifdef SUPPORT_SCALER_OVERWRITE_TABLE pScaler = FindScalerTable(InputMain, pVideoTable->hActive,pVideoTable->vActive,pVideoTable->vFreq, 0,1); if(pScaler != NULL) OverWriteScalerWithTable(pScaler,1,1); #endif //prepare info string FOsdSetInputMainString2FOsdMsgBuff(); StrCatDecoderModeName(mode); return(0); }