diff --git a/src/dvb/dvb.h b/src/dvb/dvb.h index be70e6b8..d03b0dde 100644 --- a/src/dvb/dvb.h +++ b/src/dvb/dvb.h @@ -39,7 +39,7 @@ RB_HEAD(th_dvb_mux_instance_tree, th_dvb_mux_instance); TAILQ_HEAD(th_dvb_mux_instance_queue, th_dvb_mux_instance); LIST_HEAD(th_dvb_mux_instance_list, th_dvb_mux_instance); TAILQ_HEAD(dvb_satconf_queue, dvb_satconf); - +LIST_HEAD(dvb_mux_list, dvb_mux); /** * Satconf @@ -53,12 +53,9 @@ typedef struct dvb_satconf { char *sc_comment; char *sc_lnb; - struct th_dvb_mux_instance_list sc_tdmis; - } dvb_satconf_t; - enum polarisation { POLARISATION_HORIZONTAL = 0x00, POLARISATION_VERTICAL = 0x01, @@ -76,7 +73,7 @@ typedef struct dvb_frontend_parameters dvb_frontend_parameters_t; typedef struct dvb_mux_conf { dvb_frontend_parameters_t dmc_fe_params; int dmc_polarisation; - dvb_satconf_t *dmc_satconf; + // dvb_satconf_t *dmc_satconf; #if DVB_API_VERSION >= 5 fe_modulation_t dmc_fe_modulation; fe_delivery_system_t dmc_fe_delsys; @@ -85,14 +82,54 @@ typedef struct dvb_mux_conf { } dvb_mux_conf_t; + +/** + * + */ +typedef struct dvb_network { + + struct th_dvb_mux_instance_list dn_mux_instances; // Should go away + + struct th_dvb_mux_instance_queue dn_initial_scan_queue; + int dn_initial_num_mux; + + struct th_dvb_mux_instance *dn_mux_epg; + + int dn_fe_type; // Frontend types for this network (FE_QPSK, etc) + + // struct dvb_mux_list dn_muxes; + +} dvb_network_t; + + + +/** + * + */ +typedef struct dvb_mux { + + // LIST_ENTRY(dvb_mux) dm_network_link; + dvb_network_t *dm_network; + + struct service_list dm_services; + + dvb_mux_conf_t dm_conf; + +} dvb_mux_t; + + + + /** * DVB Mux instance */ typedef struct th_dvb_mux_instance { + dvb_mux_t *tdmi_mux; + RB_ENTRY(th_dvb_mux_instance) tdmi_global_link; - LIST_ENTRY(th_dvb_mux_instance) tdmi_adapter_link; + LIST_ENTRY(th_dvb_mux_instance) tdmi_adapter_link; // wrong struct th_dvb_adapter *tdmi_adapter; @@ -124,8 +161,6 @@ typedef struct th_dvb_mux_instance { int tdmi_enabled; - dvb_mux_conf_t tdmi_conf; - /* Linked if tdmi_conf.dmc_satconf != NULL */ LIST_ENTRY(th_dvb_mux_instance) tdmi_satconf_link; @@ -137,8 +172,6 @@ typedef struct th_dvb_mux_instance { char *tdmi_default_authority; - struct service_list tdmi_transports; /* via s_mux_link */ - TAILQ_ENTRY(th_dvb_mux_instance) tdmi_scan_link; struct th_dvb_mux_instance_queue *tdmi_scan_queue; @@ -151,6 +184,7 @@ typedef struct th_dvb_mux_instance { + /** * When in raw mode we need to enqueue raw TS packet * to a different thread because we need to hold @@ -165,20 +199,6 @@ typedef struct dvb_table_feed { -/** - * - */ -typedef struct dvb_network { - - struct th_dvb_mux_instance_list dn_muxes; - - struct th_dvb_mux_instance_queue dn_initial_scan_queue; - int dn_initial_num_mux; - - th_dvb_mux_instance_t *dn_mux_epg; - -} dvb_network_t; - /** * DVB Adapter (one of these per physical adapter) @@ -212,7 +232,7 @@ typedef struct th_dvb_adapter { int32_t tda_full_mux_rx; char *tda_displayname; - int tda_type; + int tda_fe_type; struct dvb_frontend_info *tda_fe_info; // result of FE_GET_INFO ioctl() char *tda_fe_path; @@ -407,8 +427,7 @@ th_dvb_mux_instance_t *dvb_mux_create(th_dvb_adapter_t *tda, const struct dvb_mux_conf *dmc, uint16_t onid, uint16_t tsid, const char *network, const char *logprefix, int enabled, - int initialscan, const char *identifier, - dvb_satconf_t *satconf); + int initialscan, const char *identifier); void dvb_mux_set_networkname(th_dvb_mux_instance_t *tdmi, const char *name); @@ -439,9 +458,10 @@ const char *dvb_mux_add_by_params(th_dvb_adapter_t *tda, int fec, int polarisation, const char *satconf); - +#if 0 int dvb_mux_copy(th_dvb_adapter_t *dst, th_dvb_mux_instance_t *tdmi_src, dvb_satconf_t *satconf); +#endif th_dvb_mux_instance_t *dvb_mux_find (th_dvb_adapter_t *tda, const char *netname, uint16_t onid, uint16_t tsid, diff --git a/src/dvb/dvb_adapter.c b/src/dvb/dvb_adapter.c index a1175c69..5af203f5 100644 --- a/src/dvb/dvb_adapter.c +++ b/src/dvb/dvb_adapter.c @@ -78,7 +78,7 @@ tda_save(th_dvb_adapter_t *tda) lock_assert(&global_lock); - htsmsg_add_str(m, "type", dvb_adaptertype_to_str(tda->tda_type)); + htsmsg_add_str(m, "type", dvb_adaptertype_to_str(tda->tda_fe_type)); htsmsg_add_str(m, "displayname", tda->tda_displayname); htsmsg_add_u32(m, "autodiscovery", tda->tda_autodiscovery); htsmsg_add_u32(m, "idleclose", tda->tda_idleclose); @@ -466,7 +466,8 @@ tda_add(int adapter_num) else close(fe); - tda->tda_type = tda->tda_fe_info->type; + tda->tda_fe_type = tda->tda_fe_info->type; + tda->tda_dn->dn_fe_type = tda->tda_fe_type; snprintf(buf, sizeof(buf), "%s_%s", tda->tda_rootpath, tda->tda_fe_info->name); @@ -478,9 +479,9 @@ tda_add(int adapter_num) tda->tda_identifier = strdup(buf); - tda->tda_autodiscovery = tda->tda_type != FE_QPSK; + tda->tda_autodiscovery = tda->tda_fe_type != FE_QPSK; - tda->tda_sat = tda->tda_type == FE_QPSK; + tda->tda_sat = tda->tda_fe_type == FE_QPSK; /* Come up with an initial displayname, user can change it and it will be overridden by any stored settings later on */ @@ -516,7 +517,7 @@ tda_add_from_file(const char *filename) tda->tda_fe_fd = -1; tda->tda_dvr_pipe[0] = -1; - tda->tda_type = -1; + tda->tda_fe_type = -1; snprintf(buf, sizeof(buf), "%s", filename); @@ -546,7 +547,7 @@ tda_add_from_file(const char *filename) */ static void tda_init_input (th_dvb_adapter_t *tda) { - if(tda->tda_type == -1 || check_full_stream(tda)) { + if(tda->tda_fe_type == -1 || check_full_stream(tda)) { tvhlog(LOG_INFO, "dvb", "Adapter %s will run in full mux mode", tda->tda_rootpath); dvb_input_raw_setup(tda); } else { @@ -656,10 +657,10 @@ dvb_adapter_init(uint32_t adapter_mask, const char *rawfile) /* Not discovered by hardware, create it */ tda = tda_alloc(); tda->tda_identifier = strdup(f->hmf_name); - tda->tda_type = type; + tda->tda_fe_type = type; TAILQ_INSERT_TAIL(&dvb_adapters, tda, tda_global_link); } else { - if(type != tda->tda_type) + if(type != tda->tda_fe_type) continue; /* Something is wrong, ignore */ } @@ -713,7 +714,7 @@ dvb_adapter_mux_scanner(void *aux) gtimer_arm(&tda->tda_mux_scanner_timer, dvb_adapter_mux_scanner, tda, 20); /* No muxes */ - if(LIST_FIRST(&tda->tda_dn->dn_muxes) == NULL) { + if(LIST_FIRST(&tda->tda_dn->dn_mux_instances) == NULL) { dvb_adapter_poweroff(tda); return; } @@ -763,17 +764,17 @@ dvb_adapter_mux_scanner(void *aux) void dvb_adapter_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src) { +#if 0 th_dvb_mux_instance_t *tdmi_src, *tdmi_dst; lock_assert(&global_lock); - while((tdmi_dst = LIST_FIRST(&dst->tda_dn->dn_muxes)) != NULL) + while((tdmi_dst = LIST_FIRST(&dst->tda_dn->dn_mux_instances)) != NULL) dvb_mux_destroy(tdmi_dst); - LIST_FOREACH(tdmi_src, &src->tda_dn->dn_muxes, tdmi_adapter_link) - dvb_mux_copy(dst, tdmi_src, NULL); - tda_save(dst); +#endif + abort(); // XXX(dvbreorg) } @@ -792,7 +793,7 @@ dvb_adapter_destroy(th_dvb_adapter_t *tda) hts_settings_remove("dvbadapters/%s", tda->tda_identifier); - while((tdmi = LIST_FIRST(&tda->tda_dn->dn_muxes)) != NULL) + while((tdmi = LIST_FIRST(&tda->tda_dn->dn_mux_instances)) != NULL) dvb_mux_destroy(tdmi); TAILQ_REMOVE(&dvb_adapters, tda, tda_global_link); @@ -995,9 +996,9 @@ dvb_adapter_build_msg(th_dvb_adapter_t *tda) htsmsg_add_str(m, "name", tda->tda_displayname); // XXX: bad bad bad slow slow slow - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) { + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) { nummux++; - LIST_FOREACH(t, &tdmi->tdmi_transports, s_group_link) { + LIST_FOREACH(t, &tdmi->tdmi_mux->dm_services, s_group_link) { numsvc++; } } @@ -1046,11 +1047,11 @@ dvb_adapter_build_msg(th_dvb_adapter_t *tda) htsmsg_add_str(m, "devicename", tda->tda_fe_info->name); htsmsg_add_str(m, "deliverySystem", - dvb_adaptertype_to_str(tda->tda_type) ?: ""); + dvb_adaptertype_to_str(tda->tda_fe_type) ?: ""); htsmsg_add_u32(m, "satConf", tda->tda_sat); - fdiv = tda->tda_type == FE_QPSK ? 1 : 1000; + fdiv = tda->tda_fe_type == FE_QPSK ? 1 : 1000; htsmsg_add_u32(m, "freqMin", tda->tda_fe_info->frequency_min / fdiv); htsmsg_add_u32(m, "freqMax", tda->tda_fe_info->frequency_max / fdiv); @@ -1208,7 +1209,7 @@ dvb_adapter_poweroff(th_dvb_adapter_t *tda) { if (tda->tda_fe_fd == -1) return; lock_assert(&global_lock); - if (!tda->tda_poweroff || tda->tda_type != FE_QPSK) + if (!tda->tda_poweroff || tda->tda_fe_type != FE_QPSK) return; diseqc_voltage_off(tda->tda_fe_fd); tvhlog(LOG_DEBUG, "dvb", "\"%s\" is off", tda->tda_rootpath); diff --git a/src/dvb/dvb_fe.c b/src/dvb/dvb_fe.c index a7494810..8d0f6689 100644 --- a/src/dvb/dvb_fe.c +++ b/src/dvb/dvb_fe.c @@ -396,7 +396,8 @@ dvb_fe_tune(th_dvb_mux_instance_t *tdmi, const char *reason) th_dvb_adapter_t *tda = tdmi->tdmi_adapter; // copy dmc, cause frequency may be change with FE_QPSK - dvb_mux_conf_t dmc = tdmi->tdmi_conf; + const dvb_mux_t *dm = tdmi->tdmi_mux; + dvb_mux_conf_t dmc = dm->dm_conf; dvb_frontend_parameters_t* p = &dmc.dmc_fe_params; char buf[256]; @@ -423,10 +424,9 @@ dvb_fe_tune(th_dvb_mux_instance_t *tdmi, const char *reason) else dvb_adapter_start(tda); - if(tda->tda_type == FE_QPSK) { + if(tda->tda_fe_type == FE_QPSK) { /* DVB-S */ - dvb_satconf_t *sc; int port, lowfreq, hifreq, switchfreq, hiband, pol, dbsbs; lowfreq = 9750000; @@ -434,8 +434,9 @@ dvb_fe_tune(th_dvb_mux_instance_t *tdmi, const char *reason) switchfreq = 11700000; port = 0; dbsbs = 0; - - if((sc = tdmi->tdmi_conf.dmc_satconf) != NULL) { +#if 0 + dvb_satconf_t *sc; + if((sc = dm->dm_conf.dmc_satconf) != NULL) { port = sc->sc_port; if(sc->sc_lnb != NULL) @@ -443,18 +444,19 @@ dvb_fe_tune(th_dvb_mux_instance_t *tdmi, const char *reason) if(!strcmp(sc->sc_id ?: "", "DBS Bandstacked")) dbsbs = 1; } +#endif if(dbsbs) { hiband = 0; - if(tdmi->tdmi_conf.dmc_polarisation == POLARISATION_HORIZONTAL || - tdmi->tdmi_conf.dmc_polarisation == POLARISATION_CIRCULAR_LEFT) + if(dm->dm_conf.dmc_polarisation == POLARISATION_HORIZONTAL || + dm->dm_conf.dmc_polarisation == POLARISATION_CIRCULAR_LEFT) p->frequency = abs(p->frequency - hifreq); else p->frequency = abs(p->frequency - lowfreq); pol = POLARISATION_CIRCULAR_LEFT; } else { hiband = switchfreq && p->frequency > switchfreq; - pol = tdmi->tdmi_conf.dmc_polarisation; + pol = dm->dm_conf.dmc_polarisation; if(hiband) p->frequency = abs(p->frequency - hifreq); else @@ -475,7 +477,7 @@ dvb_fe_tune(th_dvb_mux_instance_t *tdmi, const char *reason) #if DVB_API_VERSION >= 5 - if (tda->tda_type == FE_QPSK) { + if (tda->tda_fe_type == FE_QPSK) { tvhlog(LOG_DEBUG, "dvb", "\"%s\" tuning via s2api to \"%s\" (%d, %d Baud, " "%s, %s, %s) for %s", tda->tda_rootpath, buf, p->frequency, p->u.qpsk.symbol_rate, dvb_mux_fec2str(p->u.qpsk.fec_inner), dvb_mux_delsys2str(dmc.dmc_fe_delsys), diff --git a/src/dvb/dvb_multiplex.c b/src/dvb/dvb_multiplex.c index 8972226e..a223bbfb 100644 --- a/src/dvb/dvb_multiplex.c +++ b/src/dvb/dvb_multiplex.c @@ -108,8 +108,7 @@ tdmi_compare_key(const struct dvb_mux_conf *a, - (int32_t)b->dmc_fe_params.frequency; fd = labs(fd); return fd < 2000 && - a->dmc_polarisation == b->dmc_polarisation && - a->dmc_satconf == b->dmc_satconf; + a->dmc_polarisation == b->dmc_polarisation; } @@ -154,8 +153,7 @@ tdmi_compare_conf(int adapter_type, th_dvb_mux_instance_t * dvb_mux_create(th_dvb_adapter_t *tda, const struct dvb_mux_conf *dmc, uint16_t onid, uint16_t tsid, const char *network, const char *source, - int enabled, int initialscan, const char *identifier, - dvb_satconf_t *satconf) + int enabled, int initialscan, const char *identifier) { th_dvb_mux_instance_t *tdmi, *c; char buf[200]; @@ -163,8 +161,8 @@ dvb_mux_create(th_dvb_adapter_t *tda, const struct dvb_mux_conf *dmc, lock_assert(&global_lock); /* HACK - we hash/compare based on 2KHz spacing and compare on +/-500Hz */ - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) { - if(tdmi_compare_key(&tdmi->tdmi_conf, dmc)) + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) { + if(tdmi_compare_key(&tdmi->tdmi_mux->dm_conf, dmc)) break; /* Mux already exist */ } @@ -174,25 +172,25 @@ dvb_mux_create(th_dvb_adapter_t *tda, const struct dvb_mux_conf *dmc, char buf2[1024]; buf2[0] = 0; - if(tdmi_compare_conf(tda->tda_type, &tdmi->tdmi_conf, dmc)) { + if(tdmi_compare_conf(tda->tda_fe_type, &tdmi->tdmi_mux->dm_conf, dmc)) { #if DVB_API_VERSION >= 5 snprintf(buf2, sizeof(buf2), " ("); - if (tdmi->tdmi_conf.dmc_fe_modulation != dmc->dmc_fe_modulation) + if (tdmi->tdmi_mux->dm_conf.dmc_fe_modulation != dmc->dmc_fe_modulation) sprintf(buf2, "%s %s->%s, ", buf2, - dvb_mux_qam2str(tdmi->tdmi_conf.dmc_fe_modulation), + dvb_mux_qam2str(tdmi->tdmi_mux->dm_conf.dmc_fe_modulation), dvb_mux_qam2str(dmc->dmc_fe_modulation)); - if (tdmi->tdmi_conf.dmc_fe_delsys != dmc->dmc_fe_delsys) + if (tdmi->tdmi_mux->dm_conf.dmc_fe_delsys != dmc->dmc_fe_delsys) sprintf(buf2, "%s %s->%s, ", buf2, - dvb_mux_delsys2str(tdmi->tdmi_conf.dmc_fe_delsys), + dvb_mux_delsys2str(tdmi->tdmi_mux->dm_conf.dmc_fe_delsys), dvb_mux_delsys2str(dmc->dmc_fe_delsys)); - if (tdmi->tdmi_conf.dmc_fe_rolloff != dmc->dmc_fe_rolloff) + if (tdmi->tdmi_mux->dm_conf.dmc_fe_rolloff != dmc->dmc_fe_rolloff) sprintf(buf2, "%s %s->%s, ", buf2, - dvb_mux_rolloff2str(tdmi->tdmi_conf.dmc_fe_rolloff), + dvb_mux_rolloff2str(tdmi->tdmi_mux->dm_conf.dmc_fe_rolloff), dvb_mux_rolloff2str(dmc->dmc_fe_rolloff)); sprintf(buf2, "%s)", buf2); #endif - memcpy(&tdmi->tdmi_conf, dmc, sizeof(struct dvb_mux_conf)); + memcpy(&tdmi->tdmi_mux->dm_conf, dmc, sizeof(struct dvb_mux_conf)); save = 1; } @@ -227,6 +225,10 @@ dvb_mux_create(th_dvb_adapter_t *tda, const struct dvb_mux_conf *dmc, tdmi = calloc(1, sizeof(th_dvb_mux_instance_t)); + tdmi->tdmi_mux = calloc(1, sizeof(dvb_mux_t)); + + tdmi->tdmi_mux->dm_network = tda->tda_dn; + if(identifier == NULL) { char qpsktxt[20]; @@ -236,12 +238,8 @@ dvb_mux_create(th_dvb_adapter_t *tda, const struct dvb_mux_conf *dmc, else qpsktxt[0] = 0; - snprintf(buf, sizeof(buf), "%s%d%s%s%s", - tda->tda_identifier, dmc->dmc_fe_params.frequency, qpsktxt, - (satconf || dmc->dmc_satconf) ? "_satconf_" : "", - (satconf ? satconf->sc_id : - (dmc->dmc_satconf ? dmc->dmc_satconf->sc_id : ""))); - + snprintf(buf, sizeof(buf), "%s%d%s", + tda->tda_identifier, dmc->dmc_fe_params.frequency, qpsktxt); tdmi->tdmi_identifier = strdup(buf); } else { tdmi->tdmi_identifier = strdup(identifier); @@ -272,15 +270,9 @@ dvb_mux_create(th_dvb_adapter_t *tda, const struct dvb_mux_conf *dmc, tdmi->tdmi_network = network ? strdup(network) : NULL; tdmi->tdmi_quality = 100; - memcpy(&tdmi->tdmi_conf, dmc, sizeof(struct dvb_mux_conf)); - if(satconf) - tdmi->tdmi_conf.dmc_satconf = satconf; - if(tdmi->tdmi_conf.dmc_satconf != NULL) { - LIST_INSERT_HEAD(&tdmi->tdmi_conf.dmc_satconf->sc_tdmis, - tdmi, tdmi_satconf_link); - } + memcpy(&tdmi->tdmi_mux->dm_conf, dmc, sizeof(struct dvb_mux_conf)); - LIST_INSERT_HEAD(&tda->tda_dn->dn_muxes, tdmi, tdmi_adapter_link); + LIST_INSERT_HEAD(&tda->tda_dn->dn_mux_instances, tdmi, tdmi_adapter_link); tdmi->tdmi_table_initial = initialscan; if(source != NULL) { @@ -316,7 +308,7 @@ dvb_mux_destroy(th_dvb_mux_instance_t *tdmi) hts_settings_remove("dvbmuxes/%s/%s", tda->tda_identifier, tdmi->tdmi_identifier); - while((t = LIST_FIRST(&tdmi->tdmi_transports)) != NULL) { + while((t = LIST_FIRST(&tdmi->tdmi_mux->dm_services)) != NULL) { hts_settings_remove("dvbtransports/%s/%s", t->s_dvb_mux_instance->tdmi_identifier, t->s_identifier); @@ -328,9 +320,6 @@ dvb_mux_destroy(th_dvb_mux_instance_t *tdmi) if(tda->tda_mux_current == tdmi) dvb_fe_stop(tda->tda_mux_current, 0); - if(tdmi->tdmi_conf.dmc_satconf != NULL) - LIST_REMOVE(tdmi, tdmi_satconf_link); - RB_REMOVE(&dvb_muxes, tdmi, tdmi_global_link); LIST_REMOVE(tdmi, tdmi_adapter_link); @@ -552,7 +541,8 @@ int dvb_mux_str2hier(const char *str) void dvb_mux_save(th_dvb_mux_instance_t *tdmi) { - struct dvb_frontend_parameters *f = &tdmi->tdmi_conf.dmc_fe_params; + const dvb_mux_conf_t *dmc = &tdmi->tdmi_mux->dm_conf; + const struct dvb_frontend_parameters *f = &dmc->dmc_fe_params; htsmsg_t *m = htsmsg_create_map(); @@ -572,7 +562,7 @@ dvb_mux_save(th_dvb_mux_instance_t *tdmi) if(tdmi->tdmi_default_authority) htsmsg_add_str(m, "default_authority", tdmi->tdmi_default_authority); - switch(tdmi->tdmi_adapter->tda_type) { + switch(tdmi->tdmi_adapter->tda_fe_type) { case FE_OFDM: htsmsg_add_str(m, "bandwidth", val2str(f->u.ofdm.bandwidth, bwtab)); @@ -603,17 +593,17 @@ dvb_mux_save(th_dvb_mux_instance_t *tdmi) val2str(f->u.qpsk.fec_inner, fectab)); htsmsg_add_str(m, "polarisation", - val2str(tdmi->tdmi_conf.dmc_polarisation, poltab)); + val2str(dmc->dmc_polarisation, poltab)); #if DVB_API_VERSION >= 5 htsmsg_add_str(m, "modulation", - val2str(tdmi->tdmi_conf.dmc_fe_modulation, qamtab)); + val2str(dmc->dmc_fe_modulation, qamtab)); htsmsg_add_str(m, "delivery_system", - val2str(tdmi->tdmi_conf.dmc_fe_delsys, delsystab)); + val2str(dmc->dmc_fe_delsys, delsystab)); htsmsg_add_str(m, "rolloff", - val2str(tdmi->tdmi_conf.dmc_fe_rolloff, rollofftab)); + val2str(dmc->dmc_fe_rolloff, rollofftab)); #endif break; @@ -633,10 +623,7 @@ dvb_mux_save(th_dvb_mux_instance_t *tdmi) break; } - if(tdmi->tdmi_conf.dmc_satconf != NULL) - htsmsg_add_str(m, "satconf", tdmi->tdmi_conf.dmc_satconf->sc_id); - - hts_settings_save(m, "dvbmuxes/%s/%s", + hts_settings_save(m, "dvbmuxes/%s/%s", tdmi->tdmi_adapter->tda_identifier, tdmi->tdmi_identifier); htsmsg_destroy(m); } @@ -660,7 +647,7 @@ tdmi_create_by_msg(th_dvb_adapter_t *tda, htsmsg_t *m, const char *identifier) htsmsg_get_u32(m, "frequency", &dmc.dmc_fe_params.frequency); - switch(tda->tda_type) { + switch(tda->tda_fe_type) { case FE_OFDM: s = htsmsg_get_str(m, "bandwidth"); if(s == NULL || (r = str2val(s, bwtab)) < 0) @@ -773,16 +760,11 @@ tdmi_create_by_msg(th_dvb_adapter_t *tda, htsmsg_t *m, const char *identifier) if(htsmsg_get_u32(m, "enabled", &enabled)) enabled = 1; - if((s = htsmsg_get_str(m, "satconf")) != NULL) - dmc.dmc_satconf = dvb_satconf_entry_find(tda, s, 0); - else - dmc.dmc_satconf = NULL; - initscan = htsmsg_get_u32_or_default(m, "initialscan", 0); tdmi = dvb_mux_create(tda, &dmc, onid, tsid, htsmsg_get_str(m, "network"), NULL, enabled, initscan, - identifier, NULL); + identifier); if(tdmi != NULL) { if((s = htsmsg_get_str(m, "status")) != NULL) @@ -956,9 +938,10 @@ dvb_mux_fe_status(char *buf, size_t size, th_dvb_mux_instance_t *tdmi) static void dvb_mux_modulation(char *buf, size_t size, th_dvb_mux_instance_t *tdmi) { - struct dvb_frontend_parameters *f = &tdmi->tdmi_conf.dmc_fe_params; + const dvb_mux_conf_t *dmc = &tdmi->tdmi_mux->dm_conf; + const struct dvb_frontend_parameters *f = &dmc->dmc_fe_params; - switch(tdmi->tdmi_adapter->tda_type) { + switch(tdmi->tdmi_adapter->tda_fe_type) { case FE_OFDM: snprintf(buf, size, "%s, %s, %s-mode", val2str(f->u.ofdm.constellation, qamtab), @@ -969,8 +952,8 @@ dvb_mux_modulation(char *buf, size_t size, th_dvb_mux_instance_t *tdmi) case FE_QPSK: #if DVB_API_VERSION >= 5 snprintf(buf, size, "%d kBaud, %s, %s", f->u.qpsk.symbol_rate / 1000, - val2str(tdmi->tdmi_conf.dmc_fe_delsys, delsystab), - val2str(tdmi->tdmi_conf.dmc_fe_modulation, qamtab)); + val2str(dmc->dmc_fe_delsys, delsystab), + val2str(dmc->dmc_fe_modulation, qamtab)); #else snprintf(buf, size, "%d kBaud", f->u.qpsk.symbol_rate / 1000); #endif @@ -1005,7 +988,7 @@ dvb_mux_build_msg(th_dvb_mux_instance_t *tdmi) htsmsg_add_u32(m, "enabled", tdmi->tdmi_enabled); htsmsg_add_str(m, "network", tdmi->tdmi_network ?: ""); - dvb_mux_nicefreq(buf, sizeof(buf), tdmi); + dvb_mux_nicefreq(buf, sizeof(buf), tdmi->tdmi_mux); htsmsg_add_str(m, "freq", buf); dvb_mux_modulation(buf, sizeof(buf), tdmi); @@ -1014,11 +997,11 @@ dvb_mux_build_msg(th_dvb_mux_instance_t *tdmi) dvb_mux_fe_status(buf, sizeof(buf), tdmi); htsmsg_add_str(m, "fe_status", buf); - htsmsg_add_str(m, "pol", - dvb_polarisation_to_str_long(tdmi->tdmi_conf.dmc_polarisation)); + const dvb_mux_conf_t *dmc = &tdmi->tdmi_mux->dm_conf; - if(tdmi->tdmi_conf.dmc_satconf != NULL) - htsmsg_add_str(m, "satconf", tdmi->tdmi_conf.dmc_satconf->sc_id); + + htsmsg_add_str(m, "pol", + dvb_polarisation_to_str_long(dmc->dmc_polarisation)); if(tdmi->tdmi_transport_stream_id != 0xffff) htsmsg_add_u32(m, "muxid", tdmi->tdmi_transport_stream_id); @@ -1066,7 +1049,7 @@ dvb_mux_add_by_params(th_dvb_adapter_t *tda, memset(&dmc, 0, sizeof(dmc)); dmc.dmc_fe_params.inversion = INVERSION_AUTO; - switch(tda->tda_type) { + switch(tda->tda_fe_type) { case FE_OFDM: dmc.dmc_fe_params.frequency = freq * 1000; if(!val2str(bw, bwtab)) @@ -1150,16 +1133,9 @@ dvb_mux_add_by_params(th_dvb_adapter_t *tda, } - if(satconf != NULL) { - dmc.dmc_satconf = dvb_satconf_entry_find(tda, satconf, 0); - if(dmc.dmc_satconf == NULL) - return "Satellite configuration not found"; - } else { - dmc.dmc_satconf = NULL; - } dmc.dmc_polarisation = polarisation; - tdmi = dvb_mux_create(tda, &dmc, 0, 0xffff, NULL, NULL, 1, 1, NULL, NULL); + tdmi = dvb_mux_create(tda, &dmc, 0, 0xffff, NULL, NULL, 1, 1, NULL); if(tdmi == NULL) return "Mux already exist"; @@ -1167,7 +1143,7 @@ dvb_mux_add_by_params(th_dvb_adapter_t *tda, return NULL; } - +#if 0 /** * */ @@ -1191,7 +1167,7 @@ dvb_mux_copy(th_dvb_adapter_t *dst, th_dvb_mux_instance_t *tdmi_src, if(tdmi_dst == NULL) return -1; // Already exist - LIST_FOREACH(t_src, &tdmi_src->tdmi_transports, s_group_link) { + LIST_FOREACH(t_src, &tdmi_src->tdmi_mux->dm_services, s_group_link) { t_dst = dvb_service_find(tdmi_dst, t_src->s_dvb_service_id, t_src->s_pmt_pid, NULL); @@ -1245,6 +1221,7 @@ dvb_mux_copy(th_dvb_adapter_t *dst, th_dvb_mux_instance_t *tdmi_src, dvb_mux_save(tdmi_dst); return 0; } +#endif th_dvb_mux_instance_t *dvb_mux_find ( th_dvb_adapter_t *tda, const char *netname, uint16_t onid, uint16_t tsid, @@ -1252,7 +1229,7 @@ th_dvb_mux_instance_t *dvb_mux_find { th_dvb_mux_instance_t *tdmi; if (tda) { - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) { + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) { if (enabled && !tdmi->tdmi_enabled) continue; if (onid && onid != tdmi->tdmi_network_id) continue; if (tsid && tsid != tdmi->tdmi_transport_stream_id) continue; diff --git a/src/dvb/dvb_preconf.c b/src/dvb/dvb_preconf.c index 755340db..1dfb5234 100644 --- a/src/dvb/dvb_preconf.c +++ b/src/dvb/dvb_preconf.c @@ -36,7 +36,7 @@ */ static void dvb_mux_preconf_add(th_dvb_adapter_t *tda, const network_t *net, - const char *source, const char *satconf) + const char *source) { const mux_t *m; struct dvb_mux_conf dmc; @@ -48,7 +48,7 @@ dvb_mux_preconf_add(th_dvb_adapter_t *tda, const network_t *net, dmc.dmc_fe_params.inversion = INVERSION_AUTO; dmc.dmc_fe_params.frequency = m->freq; - switch(tda->tda_type) { + switch(tda->tda_fe_type) { case FE_OFDM: dmc.dmc_fe_params.u.ofdm.bandwidth = m->bw; dmc.dmc_fe_params.u.ofdm.constellation = m->constellation; @@ -96,9 +96,7 @@ dvb_mux_preconf_add(th_dvb_adapter_t *tda, const network_t *net, break; } - dmc.dmc_satconf = dvb_satconf_entry_find(tda, satconf, 0); - - dvb_mux_create(tda, &dmc, 0, 0xffff, NULL, source, 1, 1, NULL, NULL); + dvb_mux_create(tda, &dmc, 0, 0xffff, NULL, source, 1, 1, NULL); } } @@ -107,8 +105,7 @@ dvb_mux_preconf_add(th_dvb_adapter_t *tda, const network_t *net, * */ int -dvb_mux_preconf_add_network(th_dvb_adapter_t *tda, const char *id, - const char *satconf) +dvb_mux_preconf_add_network(th_dvb_adapter_t *tda, const char *id) { region_list_t *list; const region_t *r; @@ -117,7 +114,7 @@ dvb_mux_preconf_add_network(th_dvb_adapter_t *tda, const char *id, snprintf(source, sizeof(source), "built-in configuration from \"%s\"", id); - switch(tda->tda_type) { + switch(tda->tda_fe_type) { case FE_QAM: list = ®ions_DVBC; break; @@ -137,7 +134,7 @@ dvb_mux_preconf_add_network(th_dvb_adapter_t *tda, const char *id, LIST_FOREACH(r, list, link) { LIST_FOREACH(n, &r->networks, link) { if(!strcmp(n->id, id)) { - dvb_mux_preconf_add(tda, n, source, satconf); + dvb_mux_preconf_add(tda, n, source); break; } } diff --git a/src/dvb/dvb_preconf.h b/src/dvb/dvb_preconf.h index 71dbce28..a76f3a7e 100644 --- a/src/dvb/dvb_preconf.h +++ b/src/dvb/dvb_preconf.h @@ -23,7 +23,6 @@ htsmsg_t *dvb_mux_preconf_get_node(int fetype, const char *node); -int dvb_mux_preconf_add_network(th_dvb_adapter_t *tda, const char *id, - const char *satconf); +int dvb_mux_preconf_add_network(th_dvb_adapter_t *tda, const char *id); #endif /* DVB_MUXCONFIG_H */ diff --git a/src/dvb/dvb_satconf.c b/src/dvb/dvb_satconf.c index ba607ef5..b0d609de 100644 --- a/src/dvb/dvb_satconf.c +++ b/src/dvb/dvb_satconf.c @@ -87,14 +87,7 @@ dvb_satconf_entry_find(th_dvb_adapter_t *tda, const char *id, int create) static void satconf_destroy(th_dvb_adapter_t *tda, dvb_satconf_t *sc) { - th_dvb_mux_instance_t *tdmi; - - while((tdmi = LIST_FIRST(&sc->sc_tdmis)) != NULL) { - tdmi->tdmi_conf.dmc_satconf = NULL; - LIST_REMOVE(tdmi, tdmi_satconf_link); - } - - TAILQ_REMOVE(&tda->tda_satconfs, sc, sc_adapter_link); + TAILQ_REMOVE(&tda->tda_satconfs, sc, sc_adapter_link); free(sc->sc_id); free(sc->sc_name); free(sc->sc_comment); diff --git a/src/dvb/dvb_service.c b/src/dvb/dvb_service.c index 821e9a30..9474338d 100644 --- a/src/dvb/dvb_service.c +++ b/src/dvb/dvb_service.c @@ -346,13 +346,13 @@ dvb_service_find3 { service_t *svc; if (tdmi) { - LIST_FOREACH(svc, &tdmi->tdmi_transports, s_group_link) { + LIST_FOREACH(svc, &tdmi->tdmi_mux->dm_services, s_group_link) { if (enabled && !svc->s_enabled) continue; if (epgprimary && !service_is_primary_epg(svc)) continue; if (sid == svc->s_dvb_service_id) return svc; } } else if (tda) { - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) { + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) { if (enabled && !tdmi->tdmi_enabled) continue; if (onid && onid != tdmi->tdmi_network_id) continue; if (tsid && tsid != tdmi->tdmi_transport_stream_id) continue; @@ -393,7 +393,7 @@ dvb_service_find2(th_dvb_mux_instance_t *tdmi, uint16_t sid, int pmt_pid, lock_assert(&global_lock); - LIST_FOREACH(t, &tdmi->tdmi_transports, s_group_link) { + LIST_FOREACH(t, &tdmi->tdmi_mux->dm_services, s_group_link) { if(t->s_dvb_service_id == sid) return t; } @@ -424,7 +424,7 @@ dvb_service_find2(th_dvb_mux_instance_t *tdmi, uint16_t sid, int pmt_pid, t->s_grace_period = dvb_grace_period; t->s_dvb_mux_instance = tdmi; - LIST_INSERT_HEAD(&tdmi->tdmi_transports, t, s_group_link); + LIST_INSERT_HEAD(&tdmi->tdmi_mux->dm_services, t, s_group_link); pthread_mutex_lock(&t->s_stream_mutex); service_make_nicename(t); @@ -460,7 +460,7 @@ dvb_service_build_msg(service_t *t) htsmsg_add_str(m, "network", tdmi->tdmi_network ?: ""); - dvb_mux_nicefreq(buf, sizeof(buf), tdmi); + dvb_mux_nicefreq(buf, sizeof(buf), tdmi->tdmi_mux); htsmsg_add_str(m, "mux", buf); if(t->s_ch != NULL) diff --git a/src/dvb/dvb_support.c b/src/dvb/dvb_support.c index 64b35b2a..4b8679ee 100644 --- a/src/dvb/dvb_support.c +++ b/src/dvb/dvb_support.c @@ -466,16 +466,16 @@ nicenum(char *x, size_t siz, unsigned int v) * */ void -dvb_mux_nicefreq(char *buf, size_t size, th_dvb_mux_instance_t *tdmi) +dvb_mux_nicefreq(char *buf, size_t size, const dvb_mux_t *dm) { char freq[50]; - if(tdmi->tdmi_adapter->tda_type == FE_QPSK) { - nicenum(freq, sizeof(freq), tdmi->tdmi_conf.dmc_fe_params.frequency); + if(dm->dm_network->dn_fe_type == FE_QPSK) { + nicenum(freq, sizeof(freq), dm->dm_conf.dmc_fe_params.frequency); snprintf(buf, size, "%s kHz", freq); } else { nicenum(freq, sizeof(freq), - tdmi->tdmi_conf.dmc_fe_params.frequency / 1000); + dm->dm_conf.dmc_fe_params.frequency / 1000); snprintf(buf, size, "%s kHz", freq); } } @@ -489,16 +489,16 @@ dvb_mux_nicename(char *buf, size_t size, th_dvb_mux_instance_t *tdmi) { char freq[50]; const char *n = tdmi->tdmi_network; + const dvb_mux_t *dm = tdmi->tdmi_mux; - if(tdmi->tdmi_adapter->tda_type == FE_QPSK) { - nicenum(freq, sizeof(freq), tdmi->tdmi_conf.dmc_fe_params.frequency); - snprintf(buf, size, "%s%s%s kHz %s (%s)", + if(tdmi->tdmi_adapter->tda_fe_type == FE_QPSK) { + nicenum(freq, sizeof(freq), dm->dm_conf.dmc_fe_params.frequency); + snprintf(buf, size, "%s%s%s kHz %s", n?:"", n ? ": ":"", freq, - dvb_polarisation_to_str_long(tdmi->tdmi_conf.dmc_polarisation), - tdmi->tdmi_conf.dmc_satconf ? tdmi->tdmi_conf.dmc_satconf->sc_name : "No satconf"); + dvb_polarisation_to_str_long(dm->dm_conf.dmc_polarisation)); } else { - nicenum(freq, sizeof(freq), tdmi->tdmi_conf.dmc_fe_params.frequency / 1000); + nicenum(freq, sizeof(freq), dm->dm_conf.dmc_fe_params.frequency / 1000); snprintf(buf, size, "%s%s%s kHz", n?:"", n ? ": ":"", freq); } } diff --git a/src/dvb/dvb_support.h b/src/dvb/dvb_support.h index 22e81eca..3d6aabe7 100644 --- a/src/dvb/dvb_support.h +++ b/src/dvb/dvb_support.h @@ -82,7 +82,7 @@ th_dvb_mux_instance_t *dvb_mux_find_by_identifier(const char *identifier); void dvb_mux_nicename(char *buf, size_t size, th_dvb_mux_instance_t *tdmi); int dvb_mux_badness(th_dvb_mux_instance_t *tdmi); const char *dvb_mux_status(th_dvb_mux_instance_t *tdmi); -void dvb_mux_nicefreq(char *buf, size_t size, th_dvb_mux_instance_t *tdmi); +void dvb_mux_nicefreq(char *buf, size_t size, const dvb_mux_t *dm); void atsc_utf16_to_utf8(uint8_t *src, int len, char *buf, int buflen); diff --git a/src/dvb/dvb_tables.c b/src/dvb/dvb_tables.c index 29ac020e..723664a8 100644 --- a/src/dvb/dvb_tables.c +++ b/src/dvb/dvb_tables.c @@ -267,7 +267,7 @@ dvb_bat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *buf, int len, j = 0; /* Find TDMI */ - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) if(tdmi->tdmi_transport_stream_id == tsid && tdmi->tdmi_network_id == onid) break; @@ -337,7 +337,7 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, if(!tdmi->tdmi_network_id) dvb_mux_set_onid(tdmi, onid); } else { - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) if(tdmi->tdmi_transport_stream_id == tsid && tdmi->tdmi_network_id != onid) break; @@ -495,9 +495,8 @@ dvb_pat_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, // Make sure this TSID is not already known on another mux // That might indicate that we have accedentally received a PAT // from another mux - LIST_FOREACH(other, &tda->tda_dn->dn_muxes, tdmi_adapter_link) - if(other != tdmi && - other->tdmi_conf.dmc_satconf == tdmi->tdmi_conf.dmc_satconf && + LIST_FOREACH(other, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) + if(other != tdmi && other->tdmi_transport_stream_id == tsid && other->tdmi_network_id == tdmi->tdmi_network_id) return -1; @@ -653,7 +652,7 @@ dvb_table_cable_delivery(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, dmc.dmc_fe_params.u.qam.fec_inner = fec_tab[ptr[10] & 0x07]; dvb_mux_create(tdmi->tdmi_adapter, &dmc, onid, tsid, NULL, - "automatic mux discovery", 1, 1, NULL, NULL); + "automatic mux discovery", 1, 1, NULL); return 0; } @@ -695,8 +694,6 @@ dvb_table_sat_delivery(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, dmc.dmc_fe_params.u.qam.fec_inner = fec_tab[ptr[10] & 0x0f]; dmc.dmc_polarisation = (ptr[6] >> 5) & 0x03; - // Same satconf (lnb, switch, etc) - dmc.dmc_satconf = tdmi->tdmi_conf.dmc_satconf; #if DVB_API_VERSION >= 5 int modulation = (ptr[6] & 0x03); @@ -738,8 +735,7 @@ dvb_table_sat_delivery(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, #endif dvb_mux_create(tdmi->tdmi_adapter, &dmc, onid, tsid, NULL, - "automatic mux discovery", 1, 1, NULL, tdmi->tdmi_conf.dmc_satconf); - + "automatic mux discovery", 1, 1, NULL); return 0; } @@ -755,7 +751,7 @@ dvb_table_local_channel(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, th_dvb_adapter_t *tda = tdmi->tdmi_adapter; service_t *t; - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) if(tdmi->tdmi_transport_stream_id == tsid && tdmi->tdmi_network_id == onid) break; @@ -872,11 +868,11 @@ dvb_nit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, switch(tag) { case DVB_DESC_SAT: - if(tdmi->tdmi_adapter->tda_type == FE_QPSK) + if(tdmi->tdmi_adapter->tda_fe_type == FE_QPSK) dvb_table_sat_delivery(tdmi, ptr, tlen, tsid, onid); break; case DVB_DESC_CABLE: - if(tdmi->tdmi_adapter->tda_type == FE_QAM) + if(tdmi->tdmi_adapter->tda_fe_type == FE_QAM) dvb_table_cable_delivery(tdmi, ptr, tlen, tsid, onid); break; case DVB_DESC_LOCAL_CHAN: @@ -935,7 +931,7 @@ atsc_vct_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, onid = (ptr[24] << 8) | ptr[25]; /* Search all muxes on adapter */ - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) if(tdmi->tdmi_transport_stream_id == tsid && tdmi->tdmi_network_id == onid); break; @@ -988,7 +984,7 @@ dvb_pmt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, service_t *t; th_dvb_table_t *tdt = opaque; - LIST_FOREACH(t, &tdmi->tdmi_transports, s_group_link) { + LIST_FOREACH(t, &tdmi->tdmi_mux->dm_services, s_group_link) { pthread_mutex_lock(&t->s_stream_mutex); psi_parse_pmt(t, ptr, len, 1, 1); if (t->s_pmt_pid == tdt->tdt_pid && t->s_status == SERVICE_RUNNING) @@ -1036,7 +1032,7 @@ dvb_table_add_default_atsc(th_dvb_mux_instance_t *tdmi) { int tableid; - if(tdmi->tdmi_conf.dmc_fe_params.u.vsb.modulation == VSB_8) { + if(tdmi->tdmi_mux->dm_conf.dmc_fe_params.u.vsb.modulation == VSB_8) { tableid = 0xc8; // Terrestrial } else { tableid = 0xc9; // Cable @@ -1064,7 +1060,7 @@ dvb_table_add_default(th_dvb_mux_instance_t *tdmi) TDT_CRC, 1); - switch(tdmi->tdmi_adapter->tda_type) { + switch(tdmi->tdmi_adapter->tda_fe_type) { case FE_QPSK: case FE_OFDM: case FE_QAM: diff --git a/src/epggrab/otamux.c b/src/epggrab/otamux.c index 16def861..517d4a68 100644 --- a/src/epggrab/otamux.c +++ b/src/epggrab/otamux.c @@ -255,7 +255,7 @@ void epggrab_ota_create_and_register_by_id th_dvb_mux_instance_t *tdmi; epggrab_ota_mux_t *ota; TAILQ_FOREACH(tda, &dvb_adapters, tda_global_link) { - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) { + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) { if (tdmi->tdmi_transport_stream_id != tsid) continue; if (onid && tdmi->tdmi_network_id != onid) continue; if (networkname && (!tdmi->tdmi_network || strcmp(networkname, tdmi->tdmi_network))) continue; diff --git a/src/webui/extjs_dvb.c b/src/webui/extjs_dvb.c index e8948351..211602f1 100644 --- a/src/webui/extjs_dvb.c +++ b/src/webui/extjs_dvb.c @@ -72,7 +72,7 @@ extjs_dvblocations(http_connection_t *hc, const char *remain, void *opaque) pthread_mutex_unlock(&global_lock); - if((out = dvb_mux_preconf_get_node(tda->tda_type, s)) == NULL) + if((out = dvb_mux_preconf_get_node(tda->tda_fe_type, s)) == NULL) return 404; htsmsg_json_serialize(out, hq, 0); @@ -110,7 +110,7 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque) htsmsg_t *out, *array, *r; const char *op = http_arg_get(&hc->hc_req_args, "op"); const char *sibling = http_arg_get(&hc->hc_req_args, "sibling"); - const char *s, *sc; + const char *s; th_dvb_mux_instance_t *tdmi; service_t *t; @@ -124,7 +124,7 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque) array = htsmsg_create_list(); TAILQ_FOREACH(tda, &dvb_adapters, tda_global_link) { - if(ref == NULL || (ref != tda && ref->tda_type == tda->tda_type)) + if(ref == NULL || (ref != tda && ref->tda_fe_type == tda->tda_fe_type)) htsmsg_add_msg(array, NULL, dvb_adapter_build_msg(tda)); } pthread_mutex_unlock(&global_lock); @@ -224,10 +224,10 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque) htsmsg_add_u32(out, "success", 1); } else if(!strcmp(op, "addnetwork")) { - sc = http_arg_get(&hc->hc_req_args, "satconf"); +// sc = http_arg_get(&hc->hc_req_args, "satconf"); if((s = http_arg_get(&hc->hc_req_args, "network")) != NULL) - dvb_mux_preconf_add_network(tda, s, sc); + dvb_mux_preconf_add_network(tda, s); out = htsmsg_create_map(); htsmsg_add_u32(out, "success", 1); @@ -237,8 +237,8 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque) tvhlog(LOG_NOTICE, "web interface", "Service probe started on \"%s\"", tda->tda_displayname); - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) { - LIST_FOREACH(t, &tdmi->tdmi_transports, s_group_link) { + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) { + LIST_FOREACH(t, &tdmi->tdmi_mux->dm_services, s_group_link) { if(t->s_enabled) serviceprobe_enqueue(t); } @@ -334,7 +334,7 @@ extjs_dvbmuxes(http_connection_t *hc, const char *remain, void *opaque) if(!strcmp(op, "get")) { array = htsmsg_create_list(); - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) htsmsg_add_msg(array, NULL, dvb_mux_build_msg(tdmi)); htsmsg_add_msg(out, "entries", array); @@ -415,16 +415,16 @@ extjs_dvbservices(http_connection_t *hc, const char *remain, void *opaque) out = htsmsg_create_map(); array = htsmsg_create_list(); - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) { - LIST_FOREACH(t, &tdmi->tdmi_transports, s_group_link) { + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) { + LIST_FOREACH(t, &tdmi->tdmi_mux->dm_services, s_group_link) { count++; } } tvec = alloca(sizeof(service_t *) * count); - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) { - LIST_FOREACH(t, &tdmi->tdmi_transports, s_group_link) { + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) { + LIST_FOREACH(t, &tdmi->tdmi_mux->dm_services, s_group_link) { tvec[i++] = t; } } @@ -608,7 +608,7 @@ extjs_dvb_addmux(http_connection_t *hc, const char *remain, void *opaque) return 0; } - +#if 0 /** * */ @@ -672,6 +672,7 @@ extjs_dvb_copymux(http_connection_t *hc, const char *remain, void *opaque) return 0; } +#endif /** * @@ -766,8 +767,9 @@ extjs_start_dvb(void) http_path_add("/dvb/addmux", NULL, extjs_dvb_addmux, ACCESS_ADMIN); - +#if 0 // XXX(dvbreorg) http_path_add("/dvb/copymux", NULL, extjs_dvb_copymux, ACCESS_ADMIN); +#endif } diff --git a/src/webui/statedump.c b/src/webui/statedump.c index 10d12977..ff7e4ef9 100644 --- a/src/webui/statedump.c +++ b/src/webui/statedump.c @@ -134,14 +134,14 @@ dumpdvbadapters(htsbuf_queue_t *hq) htsbuf_qprintf(hq, "%s (%s)\n", tda->tda_displayname, tda->tda_identifier); outputtitle(hq, 4, "Multiplexes"); - LIST_FOREACH(tdmi, &tda->tda_dn->dn_muxes, tdmi_adapter_link) { + LIST_FOREACH(tdmi, &tda->tda_dn->dn_mux_instances, tdmi_adapter_link) { char tdminame[64]; dvb_mux_nicename(tdminame, sizeof(tdminame), tdmi); htsbuf_qprintf(hq, " %s (%s)\n", tdminame, tdmi->tdmi_identifier); htsbuf_qprintf(hq, "\n"); - dumptransports(hq, &tdmi->tdmi_transports, 8); + dumptransports(hq, &tdmi->tdmi_mux->dm_services, 8); } } }