/*------------------------------------------------------------------------------------- int8 tunerbb_drv_mtv319_get_fic(uint8* buffer, uint32* buffer_size) (1) Getting the FIC data after calling tunerbb_drv_mtv319_multi_set_channel(freq, 1, ignore, ENSQUERY) In case of ENSQUERY, set_channel function must return Channel LOCKING or Not. Get_FIC is called in case of LOCKING Success (2) Return Value Sucess : 1 Fail : 0 or negative interger (If there is error code) (3) Argument uint8* buffer (IN/OUT) - buffer for FIC data uint32* buffer_size (IN /OUT) - FIC Data Size <notice> This function is used in All HOST Interface --------------------------------------------------------------------------------------- */ int8 tunerbb_drv_mtv319_get_fic(uint8* buffer, uint32* buffer_size /*, uint8 crc_on_off */) { int ret; static uint8 fic_buf[MTV319_FIC_BUF_SIZE]; if (fic_timeout_retry_cnt < 10) ret = rtvTDMB_ReadFIC(fic_buf); else ret = RTV_FIC_READ_TIMEOUT; if (ret > 0) { memcpy(buffer, fic_buf, ret); *buffer_size = ret; return MTV319_RESULT_SUCCESS; } else { fic_timeout_retry_cnt++; DMBMSG("read fic failed (%d)\n", ret); *buffer_size = 0; return MTV319_RESULT_ERROR; } }
/*==================================================================== FUNCTION mtv350_read_fib DESCRIPTION DEPENDENCIES RETURN VALUE number of FIB SIDE EFFECTS ======================================================================*/ int mtv350_read_fib(uint8 *fibs) { int fib_num; fib_num = rtvTDMB_ReadFIC(fibs); // 20101102 cys TDMB_MSG_RTV_BB("[%s] fib num %d [%x]\n", __func__,fib_num,fibs[0]); return fib_num;//rtvTDMB_ReadFIC(fibs); }
/*==================================================================== FUNCTION mtv319_read_fib DESCRIPTION DEPENDENCIES RETURN VALUE number of FIB SIDE EFFECTS ======================================================================*/ int mtv319_read_fib(uint8 *fibs) { int fib_num; fib_num = rtvTDMB_ReadFIC(fibs); #ifdef FEATURE_DMB_DUMP_FILE dmb_data_dump(fibs, fib_num, FILENAME_RAW_FIC); #endif TDMB_MSG_RTV_BB("[%s] fib num %d [%x]\n", __func__,fib_num,fibs[0]); return fib_num;//rtvTDMB_ReadFIC(fibs); }
static bool mtv319_scan_ch(struct ensemble_info_type *e_info , unsigned long freq) { enum E_RTV_FIC_DEC_RET_TYPE dc; bool ret = false; if (mtv319_pwr_on == true && e_info != NULL) { rtvTDMB_CloseAllSubChannels(); if (rtvTDMB_ScanFrequency(freq/1000) == RTV_SUCCESS) { unsigned int i; int ret_size; rtvFICDEC_Init(); /* FIC parser Init */ for (i = 0; i < 30; i++) { ret_size = rtvTDMB_ReadFIC(fic_buf); if (ret_size > 0) { dc = rtvFICDEC_Decode(fic_buf, 384); if (dc == RTV_FIC_RET_GOING) continue; if (dc == RTV_FIC_RET_DONE) ret = true; break; /* Stop */ } else { DPRINTK("mtv319_scan_ch READ Fail\n"); } } rtvTDMB_CloseFIC(); if (ret == true) __get_ensemble_info(e_info, (freq)); } } return ret; }