diff --git a/src/zapit/src/frontend.cpp b/src/zapit/src/frontend.cpp index 8b417b5e9..5ecea84dd 100644 --- a/src/zapit/src/frontend.cpp +++ b/src/zapit/src/frontend.cpp @@ -54,7 +54,7 @@ extern int zapit_debug; #define WEST 1 #define USALS -#define FE_MAX_PROPS 13 +#define FE_MAX_PROPS 18 #define diff(x,y) (max(x,y) - min(x,y)) @@ -1195,10 +1195,8 @@ fe_delivery_system_t CFrontend::getFEDeliverySystem(delivery_system_t Delsys) delsys = SYS_DVBS; break; case DVB_S2: - delsys = SYS_DVBS2; - break; case DVB_S2X: - delsys = SYS_DVBS2X; + delsys = SYS_DVBS2; break; case DVB_T: delsys = SYS_DVBT; @@ -1355,7 +1353,7 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p break; case FEC_2_3: fec = FEC_2_3; - if ((feparams->delsys == DVB_S2 || feparams->delsys == DVB_S2X) && feparams->modulation == PSK_8) + if ((getFEDeliverySystem(feparams->delsys) == SYS_DVBS2) && feparams->modulation == PSK_8) #if BOXMODEL_VUPLUS_ARM pilot = PILOT_AUTO; #else @@ -1364,7 +1362,7 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p break; case FEC_3_4: fec = FEC_3_4; - if ((feparams->delsys == DVB_S2 || feparams->delsys == DVB_S2X) && feparams->modulation == PSK_8) + if ((getFEDeliverySystem(feparams->delsys) == SYS_DVBS2) && feparams->modulation == PSK_8) #if BOXMODEL_VUPLUS_ARM pilot = PILOT_AUTO; #else @@ -1376,7 +1374,7 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p break; case FEC_5_6: fec = FEC_5_6; - if ((feparams->delsys == DVB_S2 || feparams->delsys == DVB_S2X) && feparams->modulation == PSK_8) + if ((getFEDeliverySystem(feparams->delsys) == SYS_DVBS2) && feparams->modulation == PSK_8) #if BOXMODEL_VUPLUS_ARM pilot = PILOT_AUTO; #else @@ -1394,7 +1392,7 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p break; case FEC_3_5: fec = FEC_3_5; - if ((feparams->delsys == DVB_S2 || feparams->delsys == DVB_S2X) && feparams->modulation == PSK_8) + if ((getFEDeliverySystem(feparams->delsys) == SYS_DVBS2) && feparams->modulation == PSK_8) #if BOXMODEL_VUPLUS_ARM pilot = PILOT_AUTO; #else @@ -1513,14 +1511,20 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p p[cmdseq.num].cmd = DTV_SYMBOL_RATE, p[cmdseq.num].u.data = feparams->symbol_rate, cmdseq.num++; p[cmdseq.num].cmd = DTV_INNER_FEC, p[cmdseq.num].u.data = fec, cmdseq.num++; p[cmdseq.num].cmd = DTV_INVERSION, p[cmdseq.num].u.data = feparams->inversion, cmdseq.num++; - if (feparams->delsys == DVB_S2 || feparams->delsys == DVB_S2X) + if (getFEDeliverySystem(feparams->delsys) == SYS_DVBS2) { p[cmdseq.num].cmd = DTV_ROLLOFF, p[cmdseq.num].u.data = feparams->rolloff, cmdseq.num++; p[cmdseq.num].cmd = DTV_PILOT, p[cmdseq.num].u.data = pilot, cmdseq.num++; if (can_multistream) { - p[cmdseq.num].cmd = DTV_STREAM_ID, p[cmdseq.num].u.data = feparams->plp_id | (feparams->pls_code << 8) | (feparams->pls_mode << 26), cmdseq.num++; +#if (DVB_API_VERSION >= 5 && DVB_API_VERSION_MINOR >= 11) + p[cmdseq.num].cmd = DTV_STREAM_ID, p[cmdseq.num].u.data = feparams->plp_id, cmdseq.num++; + p[cmdseq.num].cmd = DTV_SCRAMBLING_SEQUENCE_INDEX, p[cmdseq.num].u.data = feparams->pls_code, cmdseq.num++; +#else + p[cmdseq.num].cmd = DTV_STREAM_ID, p[cmdseq.num].u.data = feparams->plp_id | (feparams->pls_code << 8) | (feparams->pls_mode << 26), cmdseq.num++; +#endif } + p[cmdseq.num].cmd = DTV_ISDBT_SB_SEGMENT_IDX, p[cmdseq.num].u.data = (feparams->plp_id == 0 ? 0 : (0x80000000 | (/*default pid*/4096 << 16) | feparams->plp_id)), cmdseq.num++; p[cmdseq.num].cmd = DTV_TUNE, cmdseq.num++; } else @@ -1560,7 +1564,7 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p p[cmdseq.num].cmd = DTV_HIERARCHY, p[cmdseq.num].u.data = feparams->hierarchy, cmdseq.num++; p[cmdseq.num].cmd = DTV_BANDWIDTH_HZ, p[cmdseq.num].u.data = getFEBandwidth(feparams->bandwidth), cmdseq.num++; p[cmdseq.num].cmd = DTV_INVERSION, p[cmdseq.num].u.data = feparams->inversion, cmdseq.num++; - if (can_multistream) + if ((getFEDeliverySystem(feparams->delsys) == SYS_DVBT2) && can_multistream) { #if defined DTV_STREAM_ID p[cmdseq.num].cmd = DTV_STREAM_ID , p[cmdseq.num].u.data = feparams->plp_id, cmdseq.num++;