/*==================================================================== FUNCTION fc8150_test DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ void fc8150_test(int index) { //int i = 0, lock_ok_ch = 0; int ret = 0; ISDBT_MSG_FC8150_BB("[%s] start!!!\n", __func__); fc8150_bb_init(); // test scan all channel #if 0 // scan fc8150_bb_set_scanmode(1); for(i = 13; i <= 63; i++) { fc8150_bb_set_frequency(i); ISDBT_MSG_FC8150_BB("[%s] Channel number : %d \n", __func__, i); ret = BBM_SCAN_STATUS(NULL); if (ret) { ISDBT_MSG_FC8150_BB("[%s] LOCK FAIL!\n", __func__); } else { lock_ok_ch = i; ISDBT_MSG_FC8150_BB("[%s] LOCK OK! \n", __func__); } } if (i == 64) index = 27; // set freq_index forced else index = lock_ok_ch; #else // scan fc8150_bb_set_scan_mode(1); fc8150_bb_set_frequency(index); ISDBT_MSG_FC8150_BB("[%s] Channel number : %d \n", __func__, index); ret = BBM_SCAN_STATUS(NULL); if (ret) ISDBT_MSG_FC8150_BB("[%s] LOCK FAIL!\n", __func__); else ISDBT_MSG_FC8150_BB("[%s] LOCK OK! \n", __func__); #endif // 0 // set channel ISDBT_MSG_FC8150_BB("[%s] freq index[%d]\n", __func__, index); fc8150_bb_set_scan_mode(0); fc8150_bb_set_frequency(index); ret = BBM_SCAN_STATUS(NULL); if (ret) { ISDBT_MSG_FC8150_BB("[%s] LOCK FAIL! (ret)%d\n", __func__, ret); return; } fc8150_bb_start_ts(1); //ISDBT_MSG_FC8150_BB("[%s] end!!!\n", __func__); }
/*==================================================================== FUNCTION fc8150_bb_set_frequency DESCRIPTION DEPENDENCIES RETURN VALUE SIDE EFFECTS ======================================================================*/ int fc8150_bb_set_frequency(int freq_idx) { int ret = 0; u32 f_rf = 0; //ISDBT_MSG_FC8150_BB("[%s] start \n", __func__); f_rf = (freq_idx - 13) * 6000 + 473143; ISDBT_MSG_FC8150_BB("[%s] set FREQ = %d \n", __func__, f_rf); ret = BBM_TUNER_SET_FREQ(NULL, f_rf); if (ret != BBM_OK) { ISDBT_MSG_FC8150_BB("[%s] fail to BBM_TUNER_SET_FREQ (f_rf)%d (ret)%d\n", __func__, f_rf, ret); return -1; } #if 1 // for test ret = BBM_SCAN_STATUS(NULL); if (ret) ISDBT_MSG_FC8150_BB("[%s] LOCK FAIL!\n", __func__); else ISDBT_MSG_FC8150_BB("[%s] LOCK OK! \n", __func__); #endif // 0 BBM_WRITE(0, BBM_BUF_INT, 0x01); //ISDBT_MSG_FC8150_BB("[%s] end \n", __func__); return 0; }
unsigned char DMBDrv_ScanCh(unsigned long ulFrequency) { esbInfo_t* esb; if(!gInitFlag) return TDMB_FAIL; FIC_DEC_SubChInfoClean(); BBM_WORD_WRITE(NULL, BBM_BUF_INT, 0x01ff); if(BBM_TUNER_SET_FREQ(NULL, ulFrequency)) { BBM_WORD_WRITE(NULL, BBM_BUF_INT, 0x00ff); return TDMB_FAIL; } if(BBM_SCAN_STATUS(NULL)) { BBM_WORD_WRITE(NULL, BBM_BUF_INT, 0x00ff); return TDMB_FAIL; } // wait 1.2 sec for gathering fic information msWait(1200); // 1200 BBM_WORD_WRITE(NULL, BBM_BUF_INT, 0x00ff); esb = FIC_DEC_GetEsbInfo(0); if(esb->flag != 99) { FIC_DEC_SubChInfoClean(); return TDMB_FAIL; } if(strlen(esb->label) <= 0) { FIC_DEC_SubChInfoClean(); return TDMB_FAIL; } return TDMB_SUCCESS; }
// Modified by somesoo 20100730 for removing green block effect int8 tunerbb_drv_fc8050_multi_set_channel(int32 freq_num, uint8 subch_cnt, uint8 subch_id[ ], uint8 op_mode[ ]) { int8 res = BBM_OK; int32 freq = 0; uint8 dmb_cnt=0; int i; fc8050_service_type svcType = FC8050_SERVICE_MAX; unsigned short mask; // Added by somesoo 20100730 for removing green block effect fc8050_isr_control(0); for(i=0;i<subch_cnt;i++) { serviceType[i] = op_mode[i]; if(FC8050_ENSQUERY != op_mode[i]) tunerbb_drv_fc8050_stop(); else svcType = FC8050_ENSQUERY; } tunerbb_drv_fc8050_control_fic(0); /* Change freq_num(channel num) to frequency */ freq = tunerbb_drv_convert_chnum_to_freq(freq_num); if(freq == 0) { return FC8050_RESULT_ERROR; } res = BBM_TUNER_SET_FREQ(0, freq); if(res) { return FC8050_RESULT_ERROR; } if(svcType == FC8050_ENSQUERY) { if(BBM_SCAN_STATUS(0)) { return FC8050_RESULT_ERROR; } } BBM_WORD_READ(NULL, BBM_BUF_ENABLE, &mask); mask &= 0x100; for(i=0;i<subch_cnt;i++) { switch(serviceType[i]) { case FC8050_DAB: mask |= (1<<DAB_SVC_ID); BBM_AUDIO_SELECT(0, subch_id[i],DAB_SVC_ID); #ifdef STREAM_TS_UPLOAD fc8050_demux_select_channel(subch_id[i], DAB_SVC_ID); #else g_chinfo[subch_id[i]]=DAB_SVC_ID; #endif break; case FC8050_DMB: case FC8050_VISUAL: mask |= (1<<(DMB_SVC_ID+dmb_cnt)); //LGE_BROADCAST_I if(dmb_cnt<2) { BBM_VIDEO_SELECT(0, subch_id[i], DMB_SVC_ID+dmb_cnt, dmb_cnt); #ifdef STREAM_TS_UPLOAD fc8050_demux_select_video(subch_id[i], DMB_SVC_ID+dmb_cnt); #else g_chinfo[subch_id[i]]=dmb_cnt; #endif dmb_cnt++; } else res=BBM_NOK; break; case FC8050_DATA: mask |= (1<<DAT_SVC_ID); BBM_DATA_SELECT(0, subch_id[i], DAT_SVC_ID); #ifdef STREAM_TS_UPLOAD fc8050_demux_select_channel(subch_id[i], DAT_SVC_ID); #else g_chinfo[subch_id[i]]=DAT_SVC_ID; #endif break; case FC8050_ENSQUERY: tunerbb_drv_fc8050_control_fic(1); res = BBM_OK; break; default: res = BBM_NOK; break; } } BBM_WORD_WRITE(NULL, BBM_BUF_ENABLE, mask); tot_subch_cnt = subch_cnt; // Added by somesoo 20100730 for removing green block effect if(svcType != FC8050_ENSQUERY) fc8050_isr_control(1); if(res) return FC8050_RESULT_ERROR; else return FC8050_RESULT_SUCCESS; }