linuxdvb: fix adapter number passing to capmt

This commit is contained in:
Adam Sutton 2013-09-24 15:28:45 +01:00
parent 26db1c3d00
commit 0a54408035
3 changed files with 12 additions and 5 deletions

View file

@ -586,13 +586,13 @@ capmt_thread(void *aux)
la = (linuxdvb_adapter_t*)is->is_array[i];
if (!la || !la->mi_is_enabled) continue;
if (!la->mi_is_enabled((mpegts_input_t*)la)) continue;
if (la->la_number > MAX_CA) {
if (la->la_dvb_number > MAX_CA) {
tvhlog(LOG_ERR, "capmt", "adapter number > MAX_CA");
continue;
}
tvhlog(LOG_INFO, "capmt", "Creating capmt UDP socket for adapter %d",
la->la_number);
bind_ok = capmt_create_udp_socket(&capmt->capmt_sock_ca0[la->la_number], 9000 + la->la_number);
la->la_dvb_number);
bind_ok = capmt_create_udp_socket(&capmt->capmt_sock_ca0[la->la_dvb_number], 9000 + la->la_dvb_number);
}
}
if (bind_ok)
@ -656,7 +656,7 @@ capmt_table_input(struct th_descrambler *td, struct service *s,
lfe = (linuxdvb_frontend_t*)t->s_dvb_active_input;
if (!idnode_is_instance(&lfe->ti_id, &linuxdvb_frontend_class))
return;
adapter_num = ((linuxdvb_adapter_t*)lfe->lh_parent)->la_number;
adapter_num = ((linuxdvb_adapter_t*)lfe->lh_parent)->la_dvb_number;
caid_t *c;
@ -895,7 +895,7 @@ capmt_service_start(service_t *s)
lfe = (linuxdvb_frontend_t*)t->s_dvb_active_input;
if (!idnode_is_instance(&lfe->ti_id, &linuxdvb_frontend_class))
return;
tuner = ((linuxdvb_adapter_t*)lfe->lh_parent)->la_number;
tuner = ((linuxdvb_adapter_t*)lfe->lh_parent)->la_dvb_number;
TAILQ_FOREACH(capmt, &capmts, capmt_link) {
/* skip, if we're not active */

View file

@ -113,6 +113,9 @@ linuxdvb_adapter_is_enabled ( mpegts_input_t *mi )
linuxdvb_adapter_t *la = (linuxdvb_adapter_t*)mi;
linuxdvb_hardware_t *lh;
if (la->la_dvb_number == -1)
return 0;
LIST_FOREACH(lh, &la->lh_children, lh_parent_link)
if (lh->mi_is_enabled && lh->mi_is_enabled((mpegts_input_t*)lh))
return 1;
@ -143,6 +146,8 @@ linuxdvb_adapter_create0
la->mi_is_enabled = linuxdvb_adapter_is_enabled;
la->mi_enabled = 1;
la->la_dvb_number = -1;
/* No conf */
if (!conf)
return la;
@ -252,6 +257,7 @@ linuxdvb_adapter_added ( int adapter )
tvhlog(LOG_ERR, "linuxdvb", "failed to find/create adapter%d", adapter);
return NULL;
}
la->la_dvb_number = adapter;
if (!la->mi_displayname) {
char buf[256];
snprintf(buf, sizeof(buf), "%s #%d", dfi.name, la->la_number);

View file

@ -93,6 +93,7 @@ struct linuxdvb_adapter
*/
char *la_rootpath;
uint32_t la_number;
int la_dvb_number;
};
#define LINUXDVB_SUBSYS_FE 0x01