static int ite9173_read_status(struct dvb_frontend *fe, fe_status_t * status) { struct aml_fe *afe = fe->demodulator_priv; struct aml_fe_dev *dev = afe->dtv_demod; Dword ret; Bool locked = 0; // pr_dbg("ite9173_read_status\n"); mutex_lock(&ite_lock); ret = Demodulator_isLocked(pdemod,&locked); printk("DVB: lock status is %d\n",locked); mutex_unlock(&ite_lock); if(locked==1) { *status = FE_HAS_LOCK|FE_HAS_SIGNAL|FE_HAS_CARRIER|FE_HAS_VITERBI|FE_HAS_SYNC; } else { *status = FE_TIMEDOUT; } // pr_dbg("ite9173_read_status--\n"); return 0; }
static int ite9173_read_status(struct dvb_frontend *fe, fe_status_t * status) { Bool locked = 0; Dword ret = 0; struct ite9173_state *state = fe->demodulator_priv; pr_dbg("ite9173_read_status\n"); mutex_lock(&ite_lock); ret = Demodulator_isLocked(pdemod,&locked); printk("DVB: lock status is %d\n",locked); mutex_unlock(&ite_lock); if(Error_NO_ERROR != ret) return -1; if(locked==1) { *status = FE_HAS_LOCK|FE_HAS_SIGNAL|FE_HAS_CARRIER|FE_HAS_VITERBI|FE_HAS_SYNC; } else { *status = FE_TIMEDOUT; } pr_dbg("ite9173_read_status--\n"); return 0; }
char ITE9133_lockstatus(void) { bool locked; Dword error = Error_NO_ERROR; error = Demodulator_isLocked (&Global_demod, &locked); if (error) { DBG("TSTV:ITE9133: Demodulator_isLocked error ------ \t%s[%8d]\n", __FUNCTION__, __LINE__); } printk("Channel is %slocked!\n", locked?"":"not "); DBG("TSTV:ITE9133: ------ \t%s[%8d]\n", __FUNCTION__, __LINE__); //msleep(10); return (char)locked; }
DWORD DL_GetLocked(Bool *bLock) { DWORD dwError; BYTE ucSlaveDemod=0; down(&PDC->tunerLock); if( bLock ) { dwError= Demodulator_isLocked((Demodulator*) &PDC->Demodulator, ucSlaveDemod, bLock); } else { dwError = Error_NULL_PTR; } up(&PDC->tunerLock); return dwError; }
static int ite9133_read_status(struct dvb_frontend *fe, fe_status_t * status) { struct ite9133_state *state = fe->demodulator_priv; Dword ret; Bool locked = 0; msleep(1000); ret = Demodulator_isLocked(pdemod,&locked); if(locked==1) { *status = FE_HAS_LOCK|FE_HAS_SIGNAL|FE_HAS_CARRIER|FE_HAS_VITERBI|FE_HAS_SYNC; } else { *status = FE_TIMEDOUT; } return 0; }
DWORD DL_MonitorReception(Bool *lock) { DWORD dwError = Error_NO_ERROR; BYTE ucSlaveDemod=0; Bool bLock = False; ChannelStatistic stat; deb_data("- Enter %s Function , OvrFlwChk=%d, UnLockCount=%d-\n",__FUNCTION__, PDC->fc[ucSlaveDemod].OvrFlwChk, PDC->fc[ucSlaveDemod].UnLockCount); down(&PDC->tunerLock); if( PDC->fc[ucSlaveDemod].ulDesiredFrequency==0 || PDC->fc[ucSlaveDemod].ucDesiredBandWidth==0 ) { if( lock ) *lock = False; deb_data("- %s Function skipping\n",__FUNCTION__); goto exit; } // check lock status dwError= Demodulator_isLocked((Demodulator*) &PDC->Demodulator, ucSlaveDemod, &bLock); if( dwError!=Error_NO_ERROR ) { goto exit; } // consider as unlock if UBC is not zero dwError = Demodulator_getChannelStatistic((Demodulator*) &PDC->Demodulator, ucSlaveDemod, &stat); if( dwError!=Error_NO_ERROR ) { goto exit; } //uncomment this because this causes instability in channel scan. // report lock status if( lock ) *lock = bLock; deb_data("- %s Function, LOCK = %d\n", __FUNCTION__, bLock); // stop monitoring if(PDC->fc[ucSlaveDemod].OvrFlwChk<1) { deb_data("- %s Function end of monitor cycle -\n",__FUNCTION__); // if lock is lost for a while, try to reacquire channel if( PDC->fc[ucSlaveDemod].UnLockCount >= CHECK_LOCK_LOOPS*2/3) { WORD bw = PDC->fc[ucSlaveDemod].ucDesiredBandWidth; DWORD freq = PDC->fc[ucSlaveDemod].ulDesiredFrequency; deb_data("- %s Function need to reacquire channel, freq=%d, bw=%d-\n",__FUNCTION__, freq, bw); // reacquire channel // first power off, then power on DRV_ApCtrl (PDC, 0, 0); User_delay(0, 500); DRV_ApCtrl (PDC, 0, 1); User_delay(0, 500); // switch to another frequency, say 500MHz deb_data("- %s Function switch to 500MHz first -\n",__FUNCTION__); Demodulator_acquireChannel ((Demodulator*) &PDC->Demodulator, ucSlaveDemod, bw, 500000); User_delay(0, 500); // now change to original frequency deb_data("- %s Function switch to %d KHz later -\n",__FUNCTION__, freq); Demodulator_acquireChannel ((Demodulator*) &PDC->Demodulator, ucSlaveDemod, bw, freq); } // restart monitor cycle PDC->fc[ucSlaveDemod].OvrFlwChk = CHECK_LOCK_LOOPS; PDC->fc[ucSlaveDemod].UnLockCount = 0; dwError = Error_NO_ERROR; goto exit; } PDC->fc[ucSlaveDemod].OvrFlwChk--; // maintain lock count if( !bLock ) PDC->fc[ucSlaveDemod].UnLockCount ++; deb_data("- Exit %s Function -\n",__FUNCTION__); // avoid race with setfreq exit: up(&PDC->tunerLock); return dwError; }