static bool __get_ensemble_info(struct ensemble_info_type *e_info , unsigned long freq) { struct tcc_ensemble_info *ensbl_info; struct tcc_ensemble *esbl = &ensbl_info->ensbl; struct tcc_service_info *svc_info; struct tcc_service_comp_info *svc_comp_info; unsigned char i; unsigned char cnt = 0; ensbl_info = tcc_fic_get_ensbl_info(1); esbl = &ensbl_info->ensbl; memset(e_info, 0, sizeof(struct ensemble_info_type)); e_info->ensem_freq = freq; e_info->ensem_id = esbl->eid; strncpy(e_info->ensem_label, esbl->label, \ ENSEMBLE_LABEL_MAX); for (i = 0; i < esbl->num_svc; i++) { svc_info = &ensbl_info->svc_info[i]; svc_comp_info = &svc_info->svc_comp_info[0]; if ((svc_comp_info->svc_comp.tmid == 0x00 && svc_comp_info->svc_comp.ascty_dscty == 0x00) || (svc_comp_info->svc_comp.tmid == 0x01 && svc_comp_info->svc_comp.ascty_dscty == 0x18)) { e_info->sub_ch[cnt].sub_ch_id = \ svc_comp_info->sub_ch.subch_id; e_info->sub_ch[cnt].start_addr = \ svc_comp_info->sub_ch.start_cu; e_info->sub_ch[cnt].tmid = \ svc_comp_info->svc_comp.tmid; e_info->sub_ch[cnt].svc_type = \ svc_comp_info->svc_comp.ascty_dscty; e_info->sub_ch[cnt].svc_id = \ svc_comp_info->svc_comp.sid; e_info->sub_ch[cnt].ecc = esbl->ensbl_ecc; if(svc_comp_info->svc_comp.order == 0 && svc_comp_info->svc_comp.scids == 0xff) { e_info->sub_ch[cnt].scids = 0; } else { e_info->sub_ch[cnt].scids = \ svc_comp_info->svc_comp.scids; } strncpy(e_info->sub_ch[cnt].svc_label, \ svc_info->svc.svc_label, SVC_LABEL_MAX); cnt++; } } e_info->tot_sub_ch = cnt; #ifdef TDMB_DEBUG_SCAN __print_ensemble_info(e_info); #endif return (e_info->tot_sub_ch > 0) ? true : false; }
static bool __get_ensemble_info(struct ensemble_info_type *e_info , unsigned long freq) { DPRINTK("%s\n", __func__); rtvFICDEC_GetEnsembleInfo(e_info, freq); if (e_info->tot_sub_ch) { #ifdef TDMB_DEBUG_SCAN __print_ensemble_info(e_info); #endif return true; } else { return false; } }
static bool __get_ensemble_info(struct ensemble_info_type *e_info , unsigned long freq) { struct sub_channel_info_type *fci_sub_info; DPRINTK("%s : freq(%ld)\n", __func__, freq); e_info->tot_sub_ch = dmb_drv_get_dmb_sub_ch_cnt() + dmb_drv_get_dab_sub_ch_cnt(); DPRINTK("total subchannel number : %d\n", e_info->tot_sub_ch); if (e_info->tot_sub_ch > 0) { int i; int j; int sub_i = 0; const char *ensembleName = NULL; ensembleName = (char *)dmb_drv_get_ensemble_label(); if (ensembleName) strncpy((char *)e_info->ensem_label, (char *)ensembleName, ENSEMBLE_LABEL_MAX); e_info->ensem_freq = freq; for (i = 0; i < 2; i++) { int cnt; cnt = (i == 0) ? dmb_drv_get_dmb_sub_ch_cnt() : dmb_drv_get_dab_sub_ch_cnt(); for (j = 0; j < cnt; j++, sub_i++) { fci_sub_info = (i == 0) ? dmb_drv_get_fic_dmb(j) : dmb_drv_get_fic_dab(j); e_info->ensem_id = fci_sub_info->uiEnsembleID; e_info->sub_ch[sub_i].sub_ch_id = fci_sub_info->ucSubchID; e_info->sub_ch[sub_i].start_addr = fci_sub_info->uiStartAddress; e_info->sub_ch[sub_i].tmid = fci_sub_info->ucTMId; e_info->sub_ch[sub_i].svc_type = fci_sub_info->ucServiceType; e_info->sub_ch[sub_i].svc_id = fci_sub_info->ulServiceID; e_info->sub_ch[sub_i].scids = fci_sub_info->scids; e_info->sub_ch[sub_i].ecc = fci_sub_info->ecc; if (i == 0) memcpy( e_info->sub_ch[sub_i].svc_label, dmb_drv_get_sub_ch_dmb_label(j), SVC_LABEL_MAX); else memcpy(e_info->sub_ch[sub_i].svc_label, dmb_drv_get_sub_ch_dab_label(j), SVC_LABEL_MAX); } } #ifdef TDMB_DEBUG_SCAN __print_ensemble_info(e_info); #endif return true; } else { return false; } }