From: InuSasha Date: Sun, 5 Jan 2014 22:47:12 +0000 (+0100) Subject: EN50494: fix subelement creation for multi-port switches X-Git-Tag: v4.1~2292^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b67b98b7b6c4e9027aeb5389845bdb6ddfd64eaf;p=thirdparty%2Ftvheadend.git EN50494: fix subelement creation for multi-port switches --- diff --git a/src/input/mpegts/linuxdvb/linuxdvb_en50494.c b/src/input/mpegts/linuxdvb/linuxdvb_en50494.c index ae9f87472..7b9af649a 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_en50494.c +++ b/src/input/mpegts/linuxdvb/linuxdvb_en50494.c @@ -176,6 +176,8 @@ linuxdvb_en50494_tune tvhlog(LOG_ERR, LINUXDVB_EN50494_NAME, "transponder value bigger then 1024"); return -1; } + + /* tune frequency for the frontend */ le->le_tune_freq = (t + 350) * 4000 - freq; /* real used en50494 frequency */ /* 2 data fields (16bit) */ diff --git a/src/input/mpegts/linuxdvb/linuxdvb_satconf.c b/src/input/mpegts/linuxdvb/linuxdvb_satconf.c index 973c33e54..a59d9bce3 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_satconf.c +++ b/src/input/mpegts/linuxdvb/linuxdvb_satconf.c @@ -471,15 +471,24 @@ linuxdvb_satconf_create TAILQ_FOREACH(lse, &ls->ls_elements, ls_link) { if (!lse->ls_lnb) lse->ls_lnb = linuxdvb_lnb_create0(NULL, NULL, lse); - if (lst->ports > 1 && !lse->ls_switch) - lse->ls_switch = linuxdvb_switch_create0("Generic", NULL, lse, i, -1); + /* create multi port elements (2/4port & en50494) */ + if (lst->ports > 1) { + if( !lse->ls_en50494 && !strcmp("en50494",lst->type)) + lse->ls_en50494 = linuxdvb_en50494_create0("en50494", NULL, lse); + if( !lse->ls_switch && (!strcmp("2port",lst->type) || !strcmp("4port",lst->type))) + lse->ls_switch = linuxdvb_switch_create0("Generic", NULL, lse, i, -1); + } i++; } for (; i < lst->ports; i++) { lse = linuxdvb_satconf_ele_create0(NULL, NULL, ls); lse->ls_lnb = linuxdvb_lnb_create0(NULL, NULL, lse); + /* create multi port elements (2/4port & en50494) */ if (lst->ports > 1) { - lse->ls_switch = linuxdvb_switch_create0("Generic", NULL, lse, i, -1); + if( !strcmp("en50494",lst->type)) + lse->ls_en50494 = linuxdvb_en50494_create0("en50494", NULL, lse); + if( !strcmp("2port",lst->type) || !strcmp("4port",lst->type)) + lse->ls_switch = linuxdvb_switch_create0("Generic", NULL, lse, i, -1); } }