/*====================================================================
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;
}
Example #3
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;
}
Example #4
0
// 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;
}