mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-08-30 17:01:08 +02:00
fix frontend-parameters
Origin commit data
------------------
Branch: ni/coolstream
Commit: fd8a6c469b
Author: TangoCash <eric@loxat.de>
Date: 2020-11-01 (Sun, 01 Nov 2020)
------------------
No further description and justification available within origin commit message!
------------------
This commit was generated by Migit
This commit is contained in:
@@ -159,8 +159,6 @@ class CFrontend
|
|||||||
//uint32_t numDeliverySystems;
|
//uint32_t numDeliverySystems;
|
||||||
t_channel_id channel_id;
|
t_channel_id channel_id;
|
||||||
|
|
||||||
bool buildProperties(const FrontendParameters*, struct dtv_properties &, bool can_multistream);
|
|
||||||
|
|
||||||
FrontendParameters getFrontend(void) const;
|
FrontendParameters getFrontend(void) const;
|
||||||
void secSetTone(const fe_sec_tone_mode_t mode, const uint32_t ms);
|
void secSetTone(const fe_sec_tone_mode_t mode, const uint32_t ms);
|
||||||
void secSetVoltage(const fe_sec_voltage_t voltage, const uint32_t ms);
|
void secSetVoltage(const fe_sec_voltage_t voltage, const uint32_t ms);
|
||||||
|
@@ -1332,10 +1332,22 @@ uint32_t CFrontend::getFEBandwidth(fe_bandwidth_t bandwidth)
|
|||||||
return bandwidth_hz;
|
return bandwidth_hz;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_properties& cmdseq, bool can_multistream)
|
int CFrontend::setFrontend(const FrontendParameters *feparams, bool nowait)
|
||||||
{
|
{
|
||||||
|
tuned = false;
|
||||||
|
|
||||||
|
struct dvb_frontend_event ev;
|
||||||
|
{
|
||||||
|
// Erase previous events
|
||||||
|
while (1) {
|
||||||
|
if (ioctl(fd, FE_GET_EVENT, &ev) < 0)
|
||||||
|
break;
|
||||||
|
//printf("[fe%d/%d] DEMOD: event status %d\n", adapter, fenumber, ev.status);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fe_pilot_t pilot = PILOT_OFF;
|
fe_pilot_t pilot = PILOT_OFF;
|
||||||
int fec;
|
int fec = FEC_AUTO;
|
||||||
fe_code_rate_t fec_inner = feparams->fec_inner;
|
fe_code_rate_t fec_inner = feparams->fec_inner;
|
||||||
|
|
||||||
/* cast to int is ncesessary because many of the FEC_S2 values are not
|
/* cast to int is ncesessary because many of the FEC_S2 values are not
|
||||||
@@ -1480,15 +1492,17 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct dtv_property p[FE_MAX_PROPS];
|
struct dtv_property p[FE_MAX_PROPS];
|
||||||
|
memset(p, 0, sizeof(p));
|
||||||
|
struct dtv_properties cmdseq;
|
||||||
|
cmdseq.props = p;
|
||||||
|
cmdseq.num = 0;
|
||||||
|
p[cmdseq.num].cmd = DTV_CLEAR; cmdseq.num++;
|
||||||
|
|
||||||
switch (feparams->delsys)
|
switch (feparams->delsys)
|
||||||
{
|
{
|
||||||
case DVB_S:
|
case DVB_S:
|
||||||
case DVB_S2:
|
case DVB_S2:
|
||||||
case DVB_S2X:
|
case DVB_S2X:
|
||||||
cmdseq.props = p;
|
|
||||||
cmdseq.num = 0;
|
|
||||||
p[cmdseq.num].cmd = DTV_CLEAR, cmdseq.num++;
|
|
||||||
p[cmdseq.num].cmd = DTV_DELIVERY_SYSTEM, p[cmdseq.num].u.data = getFEDeliverySystem(feparams->delsys), cmdseq.num++;
|
p[cmdseq.num].cmd = DTV_DELIVERY_SYSTEM, p[cmdseq.num].u.data = getFEDeliverySystem(feparams->delsys), cmdseq.num++;
|
||||||
if (config.diseqcType == DISEQC_UNICABLE)
|
if (config.diseqcType == DISEQC_UNICABLE)
|
||||||
p[cmdseq.num].cmd = DTV_FREQUENCY,
|
p[cmdseq.num].cmd = DTV_FREQUENCY,
|
||||||
@@ -1509,7 +1523,7 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p
|
|||||||
{
|
{
|
||||||
p[cmdseq.num].cmd = DTV_ROLLOFF, p[cmdseq.num].u.data = feparams->rolloff, cmdseq.num++;
|
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++;
|
p[cmdseq.num].cmd = DTV_PILOT, p[cmdseq.num].u.data = pilot, cmdseq.num++;
|
||||||
if (can_multistream)
|
if (fe_can_multistream)
|
||||||
{
|
{
|
||||||
#if (DVB_API_VERSION >= 5 && DVB_API_VERSION_MINOR >= 11)
|
#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_STREAM_ID, p[cmdseq.num].u.data = feparams->plp_id, cmdseq.num++;
|
||||||
@@ -1519,35 +1533,23 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p
|
|||||||
#endif
|
#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_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
|
if (fe_can_multistream)
|
||||||
{
|
|
||||||
p[cmdseq.num].cmd = DTV_TUNE, cmdseq.num++;
|
|
||||||
}
|
|
||||||
if (can_multistream)
|
|
||||||
INFO("[fe%d/%d] tuner pilot %d (feparams %d) streamid (%d/%d/%d)\n", adapter, fenumber, pilot, feparams->pilot, feparams->plp_id, feparams->pls_code, feparams->pls_mode );
|
INFO("[fe%d/%d] tuner pilot %d (feparams %d) streamid (%d/%d/%d)\n", adapter, fenumber, pilot, feparams->pilot, feparams->plp_id, feparams->pls_code, feparams->pls_mode );
|
||||||
else
|
else
|
||||||
INFO("[fe%d/%d] tuner pilot %d (feparams %d)\n", adapter, fenumber, pilot, feparams->pilot);
|
INFO("[fe%d/%d] tuner pilot %d (feparams %d)\n", adapter, fenumber, pilot, feparams->pilot);
|
||||||
break;
|
break;
|
||||||
case DVB_C:
|
case DVB_C:
|
||||||
cmdseq.props = p;
|
|
||||||
cmdseq.num = 0;
|
|
||||||
p[cmdseq.num].cmd = DTV_CLEAR, cmdseq.num++;
|
|
||||||
p[cmdseq.num].cmd = DTV_DELIVERY_SYSTEM, p[cmdseq.num].u.data = getFEDeliverySystem(feparams->delsys), cmdseq.num++;
|
p[cmdseq.num].cmd = DTV_DELIVERY_SYSTEM, p[cmdseq.num].u.data = getFEDeliverySystem(feparams->delsys), cmdseq.num++;
|
||||||
p[cmdseq.num].cmd = DTV_FREQUENCY, p[cmdseq.num].u.data = feparams->frequency, cmdseq.num++;
|
p[cmdseq.num].cmd = DTV_FREQUENCY, p[cmdseq.num].u.data = feparams->frequency, cmdseq.num++;
|
||||||
p[cmdseq.num].cmd = DTV_MODULATION, p[cmdseq.num].u.data = feparams->modulation, cmdseq.num++;
|
p[cmdseq.num].cmd = DTV_MODULATION, p[cmdseq.num].u.data = feparams->modulation, cmdseq.num++;
|
||||||
p[cmdseq.num].cmd = DTV_SYMBOL_RATE, p[cmdseq.num].u.data = feparams->symbol_rate, cmdseq.num++;
|
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_inner, cmdseq.num++;
|
p[cmdseq.num].cmd = DTV_INNER_FEC, p[cmdseq.num].u.data = feparams->fec_inner, cmdseq.num++;
|
||||||
p[cmdseq.num].cmd = DTV_INVERSION, p[cmdseq.num].u.data = feparams->inversion, cmdseq.num++;
|
p[cmdseq.num].cmd = DTV_INVERSION, p[cmdseq.num].u.data = feparams->inversion, cmdseq.num++;
|
||||||
p[cmdseq.num].cmd = DTV_TUNE, cmdseq.num++;
|
|
||||||
break;
|
break;
|
||||||
case DVB_T:
|
case DVB_T:
|
||||||
case DVB_T2:
|
case DVB_T2:
|
||||||
case DTMB:
|
case DTMB:
|
||||||
cmdseq.props = p;
|
|
||||||
cmdseq.num = 0;
|
|
||||||
p[cmdseq.num].cmd = DTV_CLEAR, cmdseq.num++;
|
|
||||||
p[cmdseq.num].cmd = DTV_DELIVERY_SYSTEM, p[cmdseq.num].u.data = getFEDeliverySystem(feparams->delsys), cmdseq.num++;
|
p[cmdseq.num].cmd = DTV_DELIVERY_SYSTEM, p[cmdseq.num].u.data = getFEDeliverySystem(feparams->delsys), cmdseq.num++;
|
||||||
p[cmdseq.num].cmd = DTV_FREQUENCY, p[cmdseq.num].u.data = feparams->frequency, cmdseq.num++;
|
p[cmdseq.num].cmd = DTV_FREQUENCY, p[cmdseq.num].u.data = feparams->frequency, cmdseq.num++;
|
||||||
p[cmdseq.num].cmd = DTV_CODE_RATE_LP, p[cmdseq.num].u.data = feparams->code_rate_LP, cmdseq.num++;
|
p[cmdseq.num].cmd = DTV_CODE_RATE_LP, p[cmdseq.num].u.data = feparams->code_rate_LP, cmdseq.num++;
|
||||||
@@ -1558,7 +1560,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_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_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++;
|
p[cmdseq.num].cmd = DTV_INVERSION, p[cmdseq.num].u.data = feparams->inversion, cmdseq.num++;
|
||||||
if ((getFEDeliverySystem(feparams->delsys) == SYS_DVBT2) && can_multistream)
|
if ((getFEDeliverySystem(feparams->delsys) == SYS_DVBT2) && fe_can_multistream)
|
||||||
{
|
{
|
||||||
#if defined DTV_STREAM_ID
|
#if defined DTV_STREAM_ID
|
||||||
p[cmdseq.num].cmd = DTV_STREAM_ID , p[cmdseq.num].u.data = feparams->plp_id, cmdseq.num++;
|
p[cmdseq.num].cmd = DTV_STREAM_ID , p[cmdseq.num].u.data = feparams->plp_id, cmdseq.num++;
|
||||||
@@ -1566,47 +1568,18 @@ bool CFrontend::buildProperties(const FrontendParameters *feparams, struct dtv_p
|
|||||||
p[cmdseq.num].cmd = DTV_DVBT2_PLP_ID , p[cmdseq.num].u.data = feparams->plp_id, cmdseq.num++;
|
p[cmdseq.num].cmd = DTV_DVBT2_PLP_ID , p[cmdseq.num].u.data = feparams->plp_id, cmdseq.num++;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
p[cmdseq.num].cmd = DTV_TUNE, cmdseq.num++;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
INFO("[fe%d/%d] unknown frontend type, exiting\n", adapter, fenumber);
|
INFO("[fe%d/%d] unknown frontend type, exiting\n", adapter, fenumber);
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CFrontend::setFrontend(const FrontendParameters *feparams, bool nowait)
|
|
||||||
{
|
|
||||||
struct dtv_properties cmdseq;
|
|
||||||
#ifdef PEDANTIC_VALGRIND_SETUP
|
|
||||||
memset(&cmdseq, 0, sizeof(cmdseq));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
tuned = false;
|
|
||||||
|
|
||||||
struct dvb_frontend_event ev;
|
|
||||||
{
|
|
||||||
// Erase previous events
|
|
||||||
while (1) {
|
|
||||||
if (ioctl(fd, FE_GET_EVENT, &ev) < 0)
|
|
||||||
break;
|
|
||||||
//printf("[fe%d/%d] DEMOD: event status %d\n", adapter, fenumber, ev.status);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!buildProperties(feparams, cmdseq, fe_can_multistream))
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
{
|
|
||||||
//FE_TIMER_INIT();
|
|
||||||
//FE_TIMER_START();
|
|
||||||
if ((ioctl(fd, FE_SET_PROPERTY, &cmdseq)) < 0) {
|
|
||||||
ERROR("FE_SET_PROPERTY");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
//FE_TIMER_STOP("FE_SET_PROPERTY took");
|
|
||||||
}
|
}
|
||||||
|
p[cmdseq.num].cmd = DTV_TUNE, cmdseq.num++;
|
||||||
|
|
||||||
|
if ((ioctl(fd, FE_SET_PROPERTY, &cmdseq)) < 0) {
|
||||||
|
ERROR("FE_SET_PROPERTY");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (nowait)
|
if (nowait)
|
||||||
return 0;
|
return 0;
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user