int d6158_read_status(struct dvb_frontend *fe, enum fe_status *status) { int j, iRet; struct dvb_d6158_fe_ofdm_state *state = fe->demodulator_priv; UINT8 bIsLocked; //printk("%s>>\n", __FUNCTION__); for (j = 0; j < (PANIC6158_T2_TUNE_TIMEOUT / 50); j++) { YWOS_TaskSleep(50); iRet = nim_panic6158_get_lock(&state->spark_nimdev, &bIsLocked); if (bIsLocked) { break; } } //printk("bIsLocked = %d\n", bIsLocked); if (bIsLocked) { *status = FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK; } else { *status = 0; } return 0; }
/*********************************************************************** 函数名称: demod_d6158_IsLocked 函数说明: 读取信号是否锁定 ************************************************************************/ YW_ErrorType_T demod_d6158_IsLocked(U8 Handle, BOOL *IsLocked) { struct nim_device *dev = NULL; TUNER_ScanTaskParam_T *Inst = NULL; UINT8 lock = 0; *IsLocked = FALSE; Inst = TUNER_GetScanInfo(Handle); if (Inst == NULL) { return 1; } dev = (struct nim_device *)Inst->userdata; if (dev == NULL) { return 1; } nim_panic6158_get_lock(dev,&lock); *IsLocked = (BOOL )lock; return YW_NO_ERROR; }