split fec to fec/modulation/delivery system;

switch to new dvb-api headers;
improve dvb-t manual scan


Origin commit data
------------------
Branch: ni/coolstream
Commit: 17d1bbd12b
Author: [CST] Bas <bas@coolstreamtech.com>
Date: 2014-08-08 (Fri, 08 Aug 2014)



------------------
This commit was generated by Migit
This commit is contained in:
[CST] Bas
2014-08-08 13:39:06 +04:00
committed by [CST] Focus
parent 22a4ea668f
commit 478c7fba32
44 changed files with 2652 additions and 1203 deletions

View File

@@ -1442,7 +1442,7 @@ void CInfoViewer::showSNR ()
std::string polarisation = "";
if (CFEManager::getInstance()->getLiveFE()->getType() == FE_QPSK)
if (CFrontend::isSat(CFEManager::getInstance()->getLiveFE()->getCurrentDeliverySystem()))
polarisation = transponder::pol(CFEManager::getInstance()->getLiveFE()->getPolarization());
int frequency = CFEManager::getInstance()->getLiveFE()->getFrequency();

View File

@@ -132,10 +132,10 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &)
g_Zapit->setScanSatelliteList(satList);
CZapit::getInstance()->SetLiveFrontend(frontend);
TP.feparams.dvb_feparams.frequency = atoi(scansettings.sat_TP_freq.c_str());
TP.feparams.dvb_feparams.u.qpsk.symbol_rate = atoi(scansettings.sat_TP_rate.c_str());
TP.feparams.dvb_feparams.u.qpsk.fec_inner = (fe_code_rate_t)scansettings.sat_TP_fec;
TP.polarization = scansettings.sat_TP_pol;
TP.feparams.frequency = atoi(scansettings.sat_TP_freq.c_str());
TP.feparams.symbol_rate = atoi(scansettings.sat_TP_rate.c_str());
TP.feparams.fec_inner = (fe_code_rate_t)scansettings.sat_TP_fec;
TP.feparams.polarization = scansettings.sat_TP_pol;
g_Zapit->tune_TP(TP);

View File

@@ -67,13 +67,13 @@ extern cVideo * videoDecoder;
#define BAR_WIDTH 150
#define BAR_HEIGHT 16//(13 + BAR_BORDER*2)
CScanTs::CScanTs(int dtype)
CScanTs::CScanTs(delivery_system_t DelSys)
{
frameBuffer = CFrameBuffer::getInstance();
radar = 0;
total = done = 0;
freqready = 0;
deltype = dtype;
delsys = DelSys;
signalbox = NULL;
memset(&TP, 0, sizeof(TP)); // valgrind
}
@@ -86,10 +86,12 @@ void CScanTs::prev_next_TP( bool up)
{
t_satellite_position position = 0;
if (deltype == FE_QPSK)
if (CFrontend::isSat(delsys))
position = CServiceManager::getInstance()->GetSatellitePosition(scansettings.satName);
else
else if (CFrontend::isCable(delsys))
position = CServiceManager::getInstance()->GetSatellitePosition(scansettings.cableName);
else if (CFrontend::isTerr(delsys))
position = CServiceManager::getInstance()->GetSatellitePosition(scansettings.terrestrialName);
transponder_list_t &select_transponders = CServiceManager::getInstance()->GetSatelliteTransponders(position);
transponder_list_t::iterator tI;
@@ -98,14 +100,14 @@ void CScanTs::prev_next_TP( bool up)
/* FIXME transponders with duplicate frequency skipped */
if(up) {
for (tI = select_transponders.begin(); tI != select_transponders.end(); ++tI) {
if(tI->second.feparams.dvb_feparams.frequency > TP.feparams.dvb_feparams.frequency){
if(tI->second.feparams.frequency > TP.feparams.frequency){
next_tp = true;
break;
}
}
} else {
for ( tI=select_transponders.end() ; tI != select_transponders.begin(); --tI ) {
if(tI->second.feparams.dvb_feparams.frequency < TP.feparams.dvb_feparams.frequency) {
if(tI->second.feparams.frequency < TP.feparams.frequency) {
next_tp = true;
break;
}
@@ -113,28 +115,7 @@ void CScanTs::prev_next_TP( bool up)
}
if(next_tp) {
TP.feparams.dvb_feparams.frequency = tI->second.feparams.dvb_feparams.frequency;
if (deltype == FE_QPSK) {
TP.feparams.dvb_feparams.u.qpsk.symbol_rate = tI->second.feparams.dvb_feparams.u.qpsk.symbol_rate;
TP.feparams.dvb_feparams.u.qpsk.fec_inner = tI->second.feparams.dvb_feparams.u.qpsk.fec_inner;
TP.polarization = tI->second.polarization;
} else if (deltype == FE_OFDM) {
/* DVB-T. TODO: proper menu and parameter setup, not all "AUTO" */
if (TP.feparams.dvb_feparams.frequency < 300000)
TP.feparams.dvb_feparams.u.ofdm.bandwidth = BANDWIDTH_7_MHZ;
else
TP.feparams.dvb_feparams.u.ofdm.bandwidth = BANDWIDTH_8_MHZ;
TP.feparams.dvb_feparams.u.ofdm.code_rate_HP = FEC_AUTO;
TP.feparams.dvb_feparams.u.ofdm.code_rate_LP = FEC_AUTO;
TP.feparams.dvb_feparams.u.ofdm.constellation = QAM_AUTO;
TP.feparams.dvb_feparams.u.ofdm.transmission_mode = TRANSMISSION_MODE_AUTO;
TP.feparams.dvb_feparams.u.ofdm.guard_interval = GUARD_INTERVAL_AUTO;
TP.feparams.dvb_feparams.u.ofdm.hierarchy_information = HIERARCHY_AUTO;
} else {
TP.feparams.dvb_feparams.u.qam.symbol_rate = tI->second.feparams.dvb_feparams.u.qam.symbol_rate;
TP.feparams.dvb_feparams.u.qam.fec_inner = tI->second.feparams.dvb_feparams.u.qam.fec_inner;
TP.feparams.dvb_feparams.u.qam.modulation = tI->second.feparams.dvb_feparams.u.qam.modulation;
}
TP.feparams = tI->second.feparams;
testFunc();
}
}
@@ -143,16 +124,18 @@ void CScanTs::testFunc()
{
int w = x + width - xpos2;
char buffer[128];
char * f, *s, *m;
char *f, *s, *m, *f2;
if(deltype == FE_QPSK) {
CFrontend::getDelSys(deltype, TP.feparams.dvb_feparams.u.qpsk.fec_inner, dvbs_get_modulation((fe_code_rate_t)TP.feparams.dvb_feparams.u.qpsk.fec_inner), f, s, m);
snprintf(buffer,sizeof(buffer), "%u %c %d %s %s %s", TP.feparams.dvb_feparams.frequency/1000, transponder::pol(TP.polarization), TP.feparams.dvb_feparams.u.qpsk.symbol_rate/1000, f, s, m);
} else if (deltype == FE_QAM) {
CFrontend::getDelSys(deltype, TP.feparams.dvb_feparams.u.qam.fec_inner, TP.feparams.dvb_feparams.u.qam.modulation, f, s, m);
snprintf(buffer,sizeof(buffer), "%u %d %s %s %s", TP.feparams.dvb_feparams.frequency/1000, TP.feparams.dvb_feparams.u.qam.symbol_rate/1000, f, s, m);
} else if (deltype == FE_OFDM) {
sprintf(buffer, "%u", TP.feparams.dvb_feparams.frequency); /* no way int can overflow the buffer */
if (CFrontend::isSat(delsys)) {
CFrontend::getDelSys(TP.feparams.delsys, TP.feparams.fec_inner, TP.feparams.modulation, f, s, m);
snprintf(buffer,sizeof(buffer), "%u %c %d %s %s %s", TP.feparams.frequency/1000, transponder::pol(TP.feparams.polarization), TP.feparams.symbol_rate/1000, f, s, m);
} else if (CFrontend::isCable(delsys)) {
CFrontend::getDelSys(TP.feparams.delsys, TP.feparams.fec_inner, TP.feparams.modulation, f, s, m);
snprintf(buffer,sizeof(buffer), "%u %d %s %s %s", TP.feparams.frequency/1000, TP.feparams.symbol_rate/1000, f, s, m);
} else if (CFrontend::isTerr(delsys)) {
CFrontend::getDelSys(TP.feparams.delsys, TP.feparams.code_rate_HP, TP.feparams.modulation, f, s, m);
CFrontend::getDelSys(TP.feparams.delsys, TP.feparams.code_rate_LP, TP.feparams.modulation, f2, s, m);
snprintf(buffer,sizeof(buffer), "%u %d %s %s %s %s", TP.feparams.frequency/1000, TP.feparams.bandwidth, f, f2, s, m);
}
printf("CScanTs::testFunc: %s\n", buffer);
@@ -188,12 +171,14 @@ int CScanTs::exec(CMenuTarget* /*parent*/, const std::string & actionKey)
bool manual = (actionKey == "manual") || test;
bool fast = (actionKey == "fast");
switch (deltype) {
case FE_QPSK: pname = scansettings.satName; break;
case FE_QAM: pname = scansettings.cableName; break;
case FE_OFDM: pname = scansettings.terrName; break;
default: printf("CScanTs::exec:%d unknown deltype %d\n", __LINE__, deltype);
}
if (CFrontend::isSat(delsys))
pname = scansettings.satName;
else if (CFrontend::isCable(delsys))
pname = scansettings.cableName;
else if (CFrontend::isTerr(delsys))
pname = scansettings.terrestrialName;
else
printf("CScanTs::exec:%d unknown delivery_system %d\n", __LINE__, delsys);
int scan_pids = CZapit::getInstance()->scanPids();
@@ -230,36 +215,41 @@ int CScanTs::exec(CMenuTarget* /*parent*/, const std::string & actionKey)
if(scansettings.scan_nit_manual)
scan_flags |= CServiceScan::SCAN_NIT;
TP.scan_mode = scan_flags;
if (deltype == FE_QPSK) {
TP.feparams.dvb_feparams.frequency = atoi(scansettings.sat_TP_freq.c_str());
TP.feparams.dvb_feparams.u.qpsk.symbol_rate = atoi(scansettings.sat_TP_rate.c_str());
TP.feparams.dvb_feparams.u.qpsk.fec_inner = (fe_code_rate_t) scansettings.sat_TP_fec;
TP.polarization = scansettings.sat_TP_pol;
} else if (deltype == FE_OFDM) {
if (CFrontend::isSat(delsys)) {
TP.feparams.frequency = atoi(scansettings.sat_TP_freq.c_str());
TP.feparams.symbol_rate = atoi(scansettings.sat_TP_rate.c_str());
TP.feparams.fec_inner = (fe_code_rate_t) scansettings.sat_TP_fec;
TP.feparams.polarization = scansettings.sat_TP_pol;
TP.feparams.delsys = (delivery_system_t)scansettings.sat_TP_delsys;
} else if (CFrontend::isTerr(delsys)) {
/* DVB-T. TODO: proper menu and parameter setup, not all "AUTO" */
TP.feparams.dvb_feparams.frequency = atoi(scansettings.terr_TP_freq.c_str());
if (TP.feparams.dvb_feparams.frequency < 300000)
TP.feparams.dvb_feparams.u.ofdm.bandwidth = BANDWIDTH_7_MHZ;
else
TP.feparams.dvb_feparams.u.ofdm.bandwidth = BANDWIDTH_8_MHZ;
TP.feparams.dvb_feparams.u.ofdm.code_rate_HP = FEC_AUTO;
TP.feparams.dvb_feparams.u.ofdm.code_rate_LP = FEC_AUTO;
TP.feparams.dvb_feparams.u.ofdm.constellation = QAM_AUTO;
TP.feparams.dvb_feparams.u.ofdm.transmission_mode = TRANSMISSION_MODE_AUTO;
TP.feparams.dvb_feparams.u.ofdm.guard_interval = GUARD_INTERVAL_AUTO;
TP.feparams.dvb_feparams.u.ofdm.hierarchy_information = HIERARCHY_AUTO;
} else {
TP.feparams.dvb_feparams.frequency = atoi(scansettings.cable_TP_freq.c_str());
TP.feparams.dvb_feparams.u.qam.symbol_rate = atoi(scansettings.cable_TP_rate.c_str());
TP.feparams.dvb_feparams.u.qam.fec_inner = (fe_code_rate_t)scansettings.cable_TP_fec;
TP.feparams.dvb_feparams.u.qam.modulation = (fe_modulation_t) scansettings.cable_TP_mod;
TP.feparams.frequency = atoi(scansettings.terrestrial_TP_freq.c_str());
// if (TP.feparams.frequency < 300000)
// TP.feparams.bandwidth = BANDWIDTH_7_MHZ;
// else
// TP.feparams.bandwidth = BANDWIDTH_8_MHZ;
TP.feparams.bandwidth = (fe_bandwidth_t)scansettings.terrestrial_TP_bw;
TP.feparams.code_rate_HP = (fe_code_rate_t)scansettings.terrestrial_TP_coderate_HP;
TP.feparams.code_rate_LP = (fe_code_rate_t)scansettings.terrestrial_TP_coderate_LP;
TP.feparams.modulation = (fe_modulation_t)scansettings.terrestrial_TP_constel;
TP.feparams.transmission_mode = (fe_transmit_mode_t)scansettings.terrestrial_TP_transmit_mode;
TP.feparams.guard_interval = (fe_guard_interval_t)scansettings.terrestrial_TP_guard;
TP.feparams.hierarchy = (fe_hierarchy_t)scansettings.terrestrial_TP_hierarchy;
TP.feparams.delsys = (delivery_system_t)scansettings.terrestrial_TP_delsys;
} else if (CFrontend::isCable(delsys)) {
TP.feparams.frequency = atoi(scansettings.cable_TP_freq.c_str());
TP.feparams.symbol_rate = atoi(scansettings.cable_TP_rate.c_str());
TP.feparams.fec_inner = (fe_code_rate_t)scansettings.cable_TP_fec;
TP.feparams.modulation = (fe_modulation_t)scansettings.cable_TP_mod;
TP.feparams.delsys = (delivery_system_t)scansettings.cable_TP_delsys;
}
//printf("[neutrino] freq %d rate %d fec %d pol %d\n", TP.feparams.dvb_feparams.frequency, TP.feparams.dvb_feparams.u.qpsk.symbol_rate, TP.feparams.dvb_feparams.u.qpsk.fec_inner, TP.polarization);
//printf("[neutrino] freq %d rate %d fec %d pol %d\n", TP.feparams.frequency, TP.feparams.symbol_rate, TP.feparams.fec_inner, TP.feparams.polarization);
} else {
if(scansettings.scan_nit)
scan_flags |= CServiceScan::SCAN_NIT;
}
if(deltype == FE_QAM)
if (CFrontend::isCable(delsys))
CServiceScan::getInstance()->SetCableNID(scansettings.cable_nid);
CZapitClient::commandSetScanSatelliteList sat;
@@ -421,7 +411,8 @@ int CScanTs::handleMsg(neutrino_msg_t msg, neutrino_msg_data_t data)
{
int pol = data & 0xFF;
int fec = (data >> 8) & 0xFF;
int rate = data >> 16;
int rate = (data >> 16) & 0xFFFF;
//int delsys = (data >> 24)
char * f, *s, *m;
CFrontend * frontend = CServiceScan::getInstance()->GetFrontend();
frontend->getDelSys(fec, (fe_modulation_t)0, f, s, m); // FIXME
@@ -530,16 +521,21 @@ void CScanTs::paint(bool fortest)
ypos_cur_satellite = ypos;
if(deltype == FE_QPSK)
if(CFrontend::isSat(delsys))
{ //sat
paintLineLocale(xpos1, &ypos, width - xpos1, LOCALE_SCANTS_ACTSATELLITE);
xpos2 = xpos1 + 10 + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(g_Locale->getText(LOCALE_SCANTS_ACTSATELLITE))+2;
}
if(deltype == FE_QAM)
else if(CFrontend::isCable(delsys))
{ //cable
paintLineLocale(xpos1, &ypos, width - xpos1, LOCALE_SCANTS_ACTCABLE);
xpos2 = xpos1 + 10 + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(g_Locale->getText(LOCALE_SCANTS_ACTCABLE))+2;
}
else if(CFrontend::isTerr(delsys))
{ //terrestrial
paintLineLocale(xpos1, &ypos, width - xpos1, LOCALE_SCANTS_ACTTERRESTRIAL);
xpos2 = xpos1 + 10 + g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(g_Locale->getText(LOCALE_SCANTS_ACTTERRESTRIAL))+2;
}
ypos_transponder = ypos;
paintLineLocale(xpos1, &ypos, width - xpos1, LOCALE_SCANTS_TRANSPONDERS);

View File

@@ -79,11 +79,11 @@ class CScanTs : public CMenuTarget
void testFunc();
void prev_next_TP(bool);
TP_params TP;
int deltype;
delivery_system_t delsys;
std::string pname;
public:
CScanTs(int dtype = FE_QPSK);
CScanTs(delivery_system_t DelSys);
~CScanTs();
void hide();
int exec(CMenuTarget* parent, const std::string & actionKey);

View File

@@ -9,7 +9,7 @@
Copyright (C) 2011 T. Graf 'dbt'
Homepage: http://www.dbox2-tuning.net/
Copyright (C) 2011 CoolStream International Ltd
Copyright (C) 2011-2014 CoolStream International Ltd
License: GPL
@@ -101,48 +101,160 @@ const CMenuOptionChooser::keyval SATSETUP_DISEQC_OPTIONS[SATSETUP_DISEQC_OPTION_
// { SMATV_REMOTE_TUNING, LOCALE_SATSETUP_SMATVREMOTE }
};
#define SATSETUP_SCANTP_FEC_COUNT 21
#define CABLESETUP_SCANTP_FEC_COUNT 5
const CMenuOptionChooser::keyval SATSETUP_SCANTP_FEC[SATSETUP_SCANTP_FEC_COUNT] =
#define SATSETUP_SCANTP_DELSYS_COUNT 5
const CMenuOptionChooser::keyval SATSETUP_SCANTP_DELSYS[SATSETUP_SCANTP_DELSYS_COUNT] =
{
{ FEC_AUTO, LOCALE_EXTRA_FEC_AUTO },
{ FEC_S2_AUTO, LOCALE_EXTRA_FEC_AUTO_S2 },
{ FEC_1_2, LOCALE_EXTRA_FEC_1_2 },
{ FEC_2_3, LOCALE_EXTRA_FEC_2_3 },
{ FEC_3_4, LOCALE_EXTRA_FEC_3_4 },
{ FEC_5_6, LOCALE_EXTRA_FEC_5_6 },
{ FEC_7_8, LOCALE_EXTRA_FEC_7_8 },
{ FEC_S2_QPSK_1_2, LOCALE_EXTRA_FEC_S2_QPSK_1_2 },
{ FEC_S2_QPSK_2_3, LOCALE_EXTRA_FEC_S2_QPSK_2_3 },
{ FEC_S2_QPSK_3_4, LOCALE_EXTRA_FEC_S2_QPSK_3_4 },
{ FEC_S2_QPSK_5_6, LOCALE_EXTRA_FEC_S2_QPSK_5_6 },
//{ FEC_S2_QPSK_7_8, LOCALE_EXTRA_FEC_S2_QPSK_7_8 },
{ FEC_S2_QPSK_8_9, LOCALE_EXTRA_FEC_S2_QPSK_8_9 },
{ FEC_S2_QPSK_3_5, LOCALE_EXTRA_FEC_S2_QPSK_3_5 },
{ FEC_S2_QPSK_4_5, LOCALE_EXTRA_FEC_S2_QPSK_4_5 },
{ FEC_S2_QPSK_9_10, LOCALE_EXTRA_FEC_S2_QPSK_9_10 },
//{ FEC_S2_8PSK_1_2, LOCALE_EXTRA_FEC_S2_8PSK_1_2 },
{ FEC_S2_8PSK_2_3, LOCALE_EXTRA_FEC_S2_8PSK_2_3 },
{ FEC_S2_8PSK_3_4, LOCALE_EXTRA_FEC_S2_8PSK_3_4 },
{ FEC_S2_8PSK_3_5, LOCALE_EXTRA_FEC_S2_8PSK_3_5 },
{ FEC_S2_8PSK_5_6, LOCALE_EXTRA_FEC_S2_8PSK_5_6 },
//{ FEC_S2_8PSK_7_8, LOCALE_EXTRA_FEC_S2_8PSK_7_8 },
{ FEC_S2_8PSK_8_9, LOCALE_EXTRA_FEC_S2_8PSK_8_9 },
//{ FEC_S2_8PSK_4_5, LOCALE_EXTRA_FEC_S2_8PSK_4_5 },
{ FEC_S2_8PSK_9_10, LOCALE_EXTRA_FEC_S2_8PSK_9_10 }
{ DVB_S, LOCALE_EXTRA_TP_DELSYS_DVBS },
{ DVB_S2, LOCALE_EXTRA_TP_DELSYS_DVBS2 },
{ DSS, LOCALE_EXTRA_TP_DELSYS_DSS },
{ ISDBS, LOCALE_EXTRA_TP_DELSYS_ISDBS },
{ TURBO, LOCALE_EXTRA_TP_DELSYS_TURBO }
};
#define SATSETUP_SCANTP_MOD_COUNT 5
#define CABLESETUP_SCANTP_DELSYS_COUNT 2
const CMenuOptionChooser::keyval CABLESETUP_SCANTP_DELSYS[CABLESETUP_SCANTP_DELSYS_COUNT] =
{
{ DVB_C, LOCALE_EXTRA_TP_DELSYS_DVBC },
{ ISDBC, LOCALE_EXTRA_TP_DELSYS_ISDBC }
};
#define TERRSETUP_SCANTP_DELSYS_COUNT 4
const CMenuOptionChooser::keyval TERRSETUP_SCANTP_DELSYS[TERRSETUP_SCANTP_DELSYS_COUNT] =
{
{ DVB_T, LOCALE_EXTRA_TP_DELSYS_DVBT },
{ DVB_T2, LOCALE_EXTRA_TP_DELSYS_DVBT2 },
{ DTMB, LOCALE_EXTRA_TP_DELSYS_DTMB },
{ ISDBT, LOCALE_EXTRA_TP_DELSYS_ISDBT }
};
#define SATSETUP_SCANTP_FEC_COUNT 10
//#define CABLESETUP_SCANTP_FEC_COUNT 5
const CMenuOptionChooser::keyval SATSETUP_SCANTP_FEC[SATSETUP_SCANTP_FEC_COUNT] =
{
// S
{ FEC_1_2, LOCALE_EXTRA_FEC_1_2 },
{ FEC_2_3, LOCALE_EXTRA_FEC_2_3 },
{ FEC_3_4, LOCALE_EXTRA_FEC_3_4 },
{ FEC_5_6, LOCALE_EXTRA_FEC_5_6 },
{ FEC_7_8, LOCALE_EXTRA_FEC_7_8 },
{ FEC_AUTO, LOCALE_EXTRA_FEC_AUTO },
// S2
{ FEC_3_5, LOCALE_EXTRA_FEC_3_5 },
{ FEC_4_5, LOCALE_EXTRA_FEC_4_5 },
{ FEC_8_9, LOCALE_EXTRA_FEC_8_9 },
{ FEC_9_10, LOCALE_EXTRA_FEC_9_10 }
};
#if 0
#define CABLESETUP_SCANTP_FEC_COUNT 6
const CMenuOptionChooser::keyval CABLESETUP_SCANTP_FEC[CABLESETUP_SCANTP_FEC_COUNT] =
{
{ FEC_1_2, LOCALE_EXTRA_FEC_1_2 },
{ FEC_2_3, LOCALE_EXTRA_FEC_2_3 },
{ FEC_3_4, LOCALE_EXTRA_FEC_3_4 },
{ FEC_5_6, LOCALE_EXTRA_FEC_5_6 },
{ FEC_7_8, LOCALE_EXTRA_FEC_7_8 },
{ FEC_AUTO, LOCALE_EXTRA_FEC_AUTO },
};
#endif
#define TERRSETUP_SCANTP_FEC_COUNT 9
const CMenuOptionChooser::keyval TERRSETUP_SCANTP_FEC[TERRSETUP_SCANTP_FEC_COUNT] =
{
// DVB-T
{ FEC_1_2, LOCALE_EXTRA_FEC_1_2 },
{ FEC_2_3, LOCALE_EXTRA_FEC_2_3 },
{ FEC_3_4, LOCALE_EXTRA_FEC_3_4 },
{ FEC_5_6, LOCALE_EXTRA_FEC_5_6 },
{ FEC_7_8, LOCALE_EXTRA_FEC_7_8 },
{ FEC_AUTO, LOCALE_EXTRA_FEC_AUTO },
// DTMB ie
{ FEC_2_5, LOCALE_EXTRA_FEC_2_5 },
{ FEC_3_5, LOCALE_EXTRA_FEC_3_5 },
{ FEC_4_5, LOCALE_EXTRA_FEC_4_5 },
};
#define TERRSETUP_SCANTP_BW_COUNT 7
const CMenuOptionChooser::keyval TERRSETUP_SCANTP_BW[TERRSETUP_SCANTP_BW_COUNT] =
{
{ BANDWIDTH_8_MHZ, LOCALE_EXTRA_TP_BANDWIDTH_8MHZ },
{ BANDWIDTH_7_MHZ, LOCALE_EXTRA_TP_BANDWIDTH_7MHZ },
{ BANDWIDTH_6_MHZ, LOCALE_EXTRA_TP_BANDWIDTH_6MHZ },
{ BANDWIDTH_5_MHZ, LOCALE_EXTRA_TP_BANDWIDTH_5MHZ },
{ BANDWIDTH_10_MHZ, LOCALE_EXTRA_TP_BANDWIDTH_10MHZ },
{ BANDWIDTH_1_712_MHZ, LOCALE_EXTRA_TP_BANDWIDTH_1_712MHZ },
{ BANDWIDTH_AUTO, LOCALE_EXTRA_TP_BANDWIDTH_AUTO }
};
#define TERRSETUP_SCANTP_GI_COUNT 11
const CMenuOptionChooser::keyval TERRSETUP_SCANTP_GI[TERRSETUP_SCANTP_GI_COUNT] =
{
{ GUARD_INTERVAL_1_4, LOCALE_EXTRA_TP_GI_1_4 },
{ GUARD_INTERVAL_1_8, LOCALE_EXTRA_TP_GI_1_8 },
{ GUARD_INTERVAL_1_16, LOCALE_EXTRA_TP_GI_1_16 },
{ GUARD_INTERVAL_1_32, LOCALE_EXTRA_TP_GI_1_32 },
{ GUARD_INTERVAL_1_128, LOCALE_EXTRA_TP_GI_1_128 },
{ GUARD_INTERVAL_19_128, LOCALE_EXTRA_TP_GI_19_128 },
{ GUARD_INTERVAL_19_256, LOCALE_EXTRA_TP_GI_19_256 },
{ GUARD_INTERVAL_PN420, LOCALE_EXTRA_TP_GI_PN420 },
{ GUARD_INTERVAL_PN595, LOCALE_EXTRA_TP_GI_PN595 },
{ GUARD_INTERVAL_PN945, LOCALE_EXTRA_TP_GI_PN945 },
{ GUARD_INTERVAL_AUTO, LOCALE_EXTRA_TP_GI_AUTO }
};
#define TERRSETUP_SCANTP_HIERARCHY_COUNT 5
const CMenuOptionChooser::keyval TERRSETUP_SCANTP_HIERARCHY[TERRSETUP_SCANTP_HIERARCHY_COUNT] =
{
{ HIERARCHY_NONE, LOCALE_EXTRA_TP_HIERARCHY_NONE },
{ HIERARCHY_1, LOCALE_EXTRA_TP_HIERARCHY_1 },
{ HIERARCHY_2, LOCALE_EXTRA_TP_HIERARCHY_2 },
{ HIERARCHY_4, LOCALE_EXTRA_TP_HIERARCHY_4 },
{ HIERARCHY_AUTO, LOCALE_EXTRA_TP_HIERARCHY_AUTO }
};
#define TERRSETUP_SCANTP_TRANSMIT_MODE_COUNT 9
const CMenuOptionChooser::keyval TERRSETUP_SCANTP_TRANSMIT_MODE[TERRSETUP_SCANTP_TRANSMIT_MODE_COUNT] =
{
{ TRANSMISSION_MODE_1K, LOCALE_EXTRA_TP_TRANSMIT_MODE_1K },
{ TRANSMISSION_MODE_2K, LOCALE_EXTRA_TP_TRANSMIT_MODE_2K },
{ TRANSMISSION_MODE_4K, LOCALE_EXTRA_TP_TRANSMIT_MODE_4K },
{ TRANSMISSION_MODE_8K, LOCALE_EXTRA_TP_TRANSMIT_MODE_8K },
{ TRANSMISSION_MODE_16K, LOCALE_EXTRA_TP_TRANSMIT_MODE_16K },
{ TRANSMISSION_MODE_32K, LOCALE_EXTRA_TP_TRANSMIT_MODE_32K },
{ TRANSMISSION_MODE_C1, LOCALE_EXTRA_TP_TRANSMIT_MODE_C1 },
{ TRANSMISSION_MODE_C3780, LOCALE_EXTRA_TP_TRANSMIT_MODE_C3780 },
{ TRANSMISSION_MODE_AUTO, LOCALE_EXTRA_TP_TRANSMIT_MODE_AUTO }
};
#define SATSETUP_SCANTP_MOD_COUNT 3
const CMenuOptionChooser::keyval SATSETUP_SCANTP_MOD[SATSETUP_SCANTP_MOD_COUNT] =
{
{ 1, LOCALE_EXTRA_TP_MOD_16 },
{ 2, LOCALE_EXTRA_TP_MOD_32 },
{ 3, LOCALE_EXTRA_TP_MOD_64 },
{ 4, LOCALE_EXTRA_TP_MOD_128},
{ 5, LOCALE_EXTRA_TP_MOD_256}
{ QPSK, LOCALE_EXTRA_TP_MOD_4 },
{ PSK_8, LOCALE_EXTRA_TP_MOD_8 },
{ QAM_AUTO, LOCALE_EXTRA_TP_MOD_AUTO }
};
#define CABLESETUP_SCANTP_MOD_COUNT 6
const CMenuOptionChooser::keyval CABLESETUP_SCANTP_MOD[CABLESETUP_SCANTP_MOD_COUNT] =
{
{ QAM_16, LOCALE_EXTRA_TP_MOD_16 },
{ QAM_32, LOCALE_EXTRA_TP_MOD_32 },
{ QAM_64, LOCALE_EXTRA_TP_MOD_64 },
{ QAM_128, LOCALE_EXTRA_TP_MOD_128 },
{ QAM_256, LOCALE_EXTRA_TP_MOD_256 },
{ QAM_AUTO, LOCALE_EXTRA_TP_MOD_AUTO }
};
#define TERRSETUP_SCANTP_MOD_COUNT 6
const CMenuOptionChooser::keyval TERRSETUP_SCANTP_MOD[TERRSETUP_SCANTP_MOD_COUNT] =
{
{ QPSK, LOCALE_EXTRA_TP_MOD_4 },
{ QAM_16, LOCALE_EXTRA_TP_MOD_16 },
{ QAM_32, LOCALE_EXTRA_TP_MOD_32 },
{ QAM_64, LOCALE_EXTRA_TP_MOD_64 },
{ QAM_4_NR, LOCALE_EXTRA_TP_MOD_4_NR },
{ QAM_AUTO, LOCALE_EXTRA_TP_MOD_AUTO }
};
#define SATSETUP_SCANTP_POL_COUNT 4
@@ -298,7 +410,7 @@ int CScanSetup::exec(CMenuTarget* parent, const std::string &actionKey)
g_settings.keep_channel_numbers = 1;
CServiceManager::getInstance()->KeepNumbers(g_settings.keep_channel_numbers);
}
CScanTs scanTs(FE_QAM);
CScanTs scanTs(ALL_CABLE);
scanTs.exec(NULL, "manual");
if (is_wizard)
return menu_return::RETURN_EXIT_ALL;
@@ -315,11 +427,11 @@ int CScanSetup::exec(CMenuTarget* parent, const std::string &actionKey)
std::string scants_key[] = {"all", "manual", "test", "fast", "auto"/*doesn't exists in CScanTs!*/};
if (actionKey.size() > 1) {
int delsys;
delivery_system_t delsys;
switch (actionKey[0]) {
case 's': delsys = FE_QPSK; break;
case 't': delsys = FE_OFDM; break;
default: delsys = FE_QAM; break;
case 's': delsys = ALL_SAT; break;
case 't': delsys = ALL_TERR; break;
default: delsys = ALL_CABLE; break;
}
std::string as = actionKey.substr(1);
printf("[neutrino] CScanSetup::%s scan %c in %s mode...\n", __FUNCTION__, actionKey[0], as.c_str());
@@ -418,7 +530,7 @@ int CScanSetup::showScanMenu()
}
#endif
if (CFEManager::getInstance()->haveSat()) {
r_system = DVB_S;
r_system = ALL_SAT;
//settings->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_SCANTS_PREVERENCES_RECEIVING_SYSTEM ));
@@ -463,8 +575,9 @@ int CScanSetup::showScanMenu()
settings->addItem(mf);
settings->addItem(GenericMenuSeparatorLine);
}
if (CFEManager::getInstance()->haveCable()) {
r_system = DVB_C;
r_system = ALL_CABLE;
//tune timeout
if(CFEManager::getInstance()->getFrontendCount() <= 1) {
@@ -501,8 +614,9 @@ int CScanSetup::showScanMenu()
settings->addItem(fcableScan);
settings->addItem(GenericMenuSeparatorLine);
}
if (CFEManager::getInstance()->haveTerr()) {
r_system = DVB_T;
r_system = ALL_TERR;
// tune timeout, "Setup tuner" is not shown for only one non-sat tuner
if (CFEManager::getInstance()->getFrontendCount() <= 1) {
CMenuOptionNumberChooser * nc = new CMenuOptionNumberChooser(LOCALE_EXTRA_ZAPIT_FE_TIMEOUT, (int *)&zapitCfg.feTimeout, true, 6, 100);
@@ -586,15 +700,17 @@ int CScanSetup::showScanMenuFrontendSetup()
char name[255];
if (g_settings.easymenu)
snprintf(name, sizeof(name), "%s %d: %s", g_Locale->getText(LOCALE_SATSETUP_FE_SETUP), i+1,
fe->getInfo()->type == FE_QPSK ? g_Locale->getText(LOCALE_SCANTS_ACTSATELLITE)
: fe->getInfo()->type == FE_OFDM ? g_Locale->getText(LOCALE_SCANTS_ACTTERRESTRIAL)
fe->isHybrid() ? g_Locale->getText(LOCALE_SCANTS_ACTHYBRID)
: fe->hasSat() ? g_Locale->getText(LOCALE_SCANTS_ACTSATELLITE)
: fe->hasTerr() ? g_Locale->getText(LOCALE_SCANTS_ACTTERRESTRIAL)
: g_Locale->getText(LOCALE_SCANTS_ACTCABLE));
else
snprintf(name, sizeof(name), "%s %d: %s %s", g_Locale->getText(LOCALE_SATSETUP_FE_SETUP), i+1,
fe->getInfo()->type == FE_QPSK ? g_Locale->getText(LOCALE_SCANTS_ACTSATELLITE)
: fe->getInfo()->type == FE_OFDM ? g_Locale->getText(LOCALE_SCANTS_ACTTERRESTRIAL)
fe->isHybrid() ? g_Locale->getText(LOCALE_SCANTS_ACTHYBRID)
: fe->hasSat() ? g_Locale->getText(LOCALE_SCANTS_ACTSATELLITE)
: fe->hasTerr()? g_Locale->getText(LOCALE_SCANTS_ACTTERRESTRIAL)
: g_Locale->getText(LOCALE_SCANTS_ACTCABLE),
fe->getInfo()->name);
fe->getName());
const char * icon = NULL;
neutrino_msg_t key = CRCInput::RC_nokey;
@@ -735,11 +851,12 @@ int CScanSetup::showFrontendSetup(int number)
char name[255];
if (g_settings.easymenu)
snprintf(name, sizeof(name), "%s %d: %s", g_Locale->getText(LOCALE_SATSETUP_FE_SETUP), number+1,
fe->getInfo()->type == FE_QPSK ? g_Locale->getText(LOCALE_SCANTS_ACTSATELLITE)
: fe->getInfo()->type == FE_OFDM ? g_Locale->getText(LOCALE_SCANTS_ACTTERRESTRIAL)
fe->isHybrid() ? g_Locale->getText(LOCALE_SCANTS_ACTHYBRID)
: fe->hasSat() ? g_Locale->getText(LOCALE_SCANTS_ACTSATELLITE)
: fe->hasTerr() ? g_Locale->getText(LOCALE_SCANTS_ACTTERRESTRIAL)
: g_Locale->getText(LOCALE_SCANTS_ACTCABLE));
else
snprintf(name, sizeof(name), "%s %d: %s", g_Locale->getText(LOCALE_SATSETUP_FE_SETUP), number+1, fe->getInfo()->name);
snprintf(name, sizeof(name), "%s %d: %s", g_Locale->getText(LOCALE_SATSETUP_FE_SETUP), number+1, fe->getName());
CMenuWidget * setupMenu = new CMenuWidget(name, NEUTRINO_ICON_SETTINGS, width);
setupMenu->setSelected(feselected);
@@ -760,14 +877,14 @@ int CScanSetup::showFrontendSetup(int number)
/* by default, enable first 2 options */
int mode_count = 2;
if (fe->getInfo()->type == FE_QPSK) {
if (fe->hasSat()) {
/* enable master option, check if we have masters to enable link options */
mode_count = 3;
for (int i = 0; i < fecount; i++) {
CFrontend * testfe = CFEManager::getInstance()->getFE(i);
if (i != fenumber && (fe->getType() == testfe->getType()) && (testfe->getMode() == CFrontend::FE_MODE_MASTER)) {
if (i != fenumber && (fe->getSupportedDeliverySystems() == testfe->getSupportedDeliverySystems()) && (testfe->getMode() == CFrontend::FE_MODE_MASTER)) {
int num = testfe->getNumber();
snprintf(fename[select_count], sizeof(fename[select_count]), "%d: %s", num+1, testfe->getInfo()->name);
snprintf(fename[select_count], sizeof(fename[select_count]), "%d: %s", num+1, testfe->getName());
feselect[select_count].key = num;
feselect[select_count].value = NONEXISTANT_LOCALE;
feselect[select_count].valname = fename[select_count];
@@ -798,7 +915,7 @@ int CScanSetup::showFrontendSetup(int number)
setupMenu->addItem(mc);
msettings.Clear();
if (fe->getInfo()->type == FE_QPSK) {
if (fe->hasSat()) {
/* disable all but mode option for linked frontends */
bool allow_moptions = !CFrontend::linked(femode) && femode != CFrontend::FE_MODE_UNUSED;
@@ -945,7 +1062,7 @@ int CScanSetup::showScanMenuLnbSetup()
CFrontend * fe = CFEManager::getInstance()->getFE(fenumber);
char name[255];
snprintf(name, sizeof(name), "%s %d: %s", g_Locale->getText(LOCALE_SATSETUP_SATELLITE), fenumber+1, fe->getInfo()->name);
snprintf(name, sizeof(name), "%s %d: %s", g_Locale->getText(LOCALE_SATSETUP_SATELLITE), fenumber+1, fe->getName());
CMenuWidget * sat_setup = new CMenuWidget(name, NEUTRINO_ICON_SETTINGS, width);
sat_setup->addIntroItems();
@@ -1001,7 +1118,7 @@ void CScanSetup::fillSatSelect(CMenuOptionStringChooser * select)
for(int i = 0; i < count; i++) {
CFrontend * fe = CFEManager::getInstance()->getFE(i);
if ((fe->getInfo()->type != FE_QPSK) || (fe->getMode() == CFrontend::FE_MODE_UNUSED))
if (!fe->hasSat() || (fe->getMode() == CFrontend::FE_MODE_UNUSED))
continue;
satellite_map_t & satmap = fe->getSatellites();
@@ -1036,7 +1153,7 @@ void CScanSetup::fillSatSelect(CMenuOptionStringChooser * select)
//init cable provider menu
void CScanSetup::fillCableSelect(CMenuOptionStringChooser * select)
{
const char *what = r_system == DVB_C ? "cable" : "terrestrial";
const char *what = (r_system & ALL_CABLE) ? "cable" : "terrestrial";
printf("[neutrino] CScanSetup call %s (%s)...\n", __func__, what);
//don't misunderstand the name "satSelect", in this context it's actually for cable providers
satellite_map_t satmap = CServiceManager::getInstance()->SatelliteList();
@@ -1044,9 +1161,7 @@ void CScanSetup::fillCableSelect(CMenuOptionStringChooser * select)
std::string fname;
for (sat_iterator_t sit = satmap.begin(); sit != satmap.end(); sit++)
{
if (r_system == DVB_C && sit->second.deltype != FE_QAM)
continue;
if (r_system == DVB_T && sit->second.deltype != FE_OFDM)
if (!(r_system & sit->second.delsys))
continue;
printf("Adding %s menu for %s position %d\n", what, sit->second.name.c_str(), sit->first);
@@ -1060,11 +1175,42 @@ void CScanSetup::fillCableSelect(CMenuOptionStringChooser * select)
dprintf(DEBUG_DEBUG, "got scanprovider (%s): %s\n", what, sit->second.name.c_str());
}
if (!sfound && !fname.empty()) {
if (r_system == DVB_C)
if (r_system & ALL_CABLE)
scansettings.cableName = fname;
if (r_system == DVB_T)
scansettings.terrName = fname;
}
}
//init terrestrial provider menu
void CScanSetup::fillTerrSelect(CMenuOptionStringChooser * select)
{
const char *what = (r_system & ALL_TERR) ? "terrestrial" : "cable";
printf("[neutrino] CScanSetup call %s (%s)...\n", __func__, what);
//don't misunderstand the name "satSelect", in this context it's actually for cable providers
satellite_map_t satmap = CServiceManager::getInstance()->SatelliteList();
bool sfound = false;
std::string fname;
for (sat_iterator_t sit = satmap.begin(); sit != satmap.end(); sit++)
{
if (!(r_system & sit->second.delsys))
continue;
printf("Adding %s menu for %s position %d\n", what, sit->second.name.c_str(), sit->first);
select->addOption(sit->second.name.c_str());
if (fname.empty())
fname = sit->second.name;
if (!sfound && (scansettings.terrestrialName == sit->second.name))
sfound = true;
dprintf(DEBUG_DEBUG, "got scanprovider (%s): %s\n", what, sit->second.name.c_str());
}
if (!sfound && !fname.empty()) {
if (r_system & ALL_TERR)
scansettings.terrestrialName = fname;
}
}
@@ -1076,9 +1222,9 @@ int CScanSetup::showScanMenuSatFind()
char name[255];
static int selected = 0;
r_system = DVB_S;
r_system = ALL_SAT;
snprintf(name, sizeof(name), "%s %d: %s", g_Locale->getText(LOCALE_MOTORCONTROL_HEAD), fenumber+1, fe->getInfo()->name);
snprintf(name, sizeof(name), "%s %d: %s", g_Locale->getText(LOCALE_MOTORCONTROL_HEAD), fenumber+1, fe->getName());
CMenuWidget* sat_findMenu = new CMenuWidget(name /*LOCALE_MOTORCONTROL_HEAD*/, NEUTRINO_ICON_SETTINGS, width);
sat_findMenu->setSelected(selected);
@@ -1191,7 +1337,7 @@ void CScanSetup::addScanMenuManualScan(CMenuWidget *manual_Scan, bool stest)
manual_Scan->addIntroItems();
const char *act_test, *act_manual;
//----------------------------------------------------------------------
if (r_system == DVB_C) {
if (r_system == ALL_CABLE) {
act_test = "ctest"; act_manual = "cmanual";
CMenuOptionStringChooser * cableSelect = new CMenuOptionStringChooser(LOCALE_CABLESETUP_PROVIDER, &scansettings.cableName, true, this, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED, true);
cableSelect->setHint("", LOCALE_MENU_HINT_SCAN_CABLE);
@@ -1201,14 +1347,14 @@ void CScanSetup::addScanMenuManualScan(CMenuWidget *manual_Scan, bool stest)
mf->setHint("", LOCALE_MENU_HINT_SCAN_NID);
manual_Scan->addItem(mf);
mf = new CMenuDForwarder(LOCALE_SCANTS_SELECT_TP, true, NULL, new CTPSelectHandler(), "cable", CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN);
} else if (r_system == DVB_T) {
} else if (r_system == ALL_TERR) {
act_test = "ttest"; act_manual = "tmanual";
CMenuOptionStringChooser * terrSelect = new CMenuOptionStringChooser(LOCALE_TERRESTRIALSETUP_PROVIDER, &scansettings.terrName, true, this, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED, true);
CMenuOptionStringChooser * terrSelect = new CMenuOptionStringChooser(LOCALE_TERRESTRIALSETUP_PROVIDER, &scansettings.terrestrialName, true, this, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED, true);
//terrSelect->setHint("", LOCALE_MENU_HINT_SCAN_CABLE);
fillCableSelect(terrSelect);
fillTerrSelect(terrSelect);
manual_Scan->addItem(terrSelect);
mf = new CMenuDForwarder(LOCALE_SCANTS_SELECT_TP, true, NULL, new CTPSelectHandler(), "terrestrial", CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN);
} else {
} else if (r_system == ALL_SAT) {
act_test = "stest"; act_manual = "smanual";
CMenuOptionStringChooser * satSelect = new CMenuOptionStringChooser(LOCALE_SATSETUP_SATELLITE, &scansettings.satName, true, this, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED, true);
satSelect->setHint("", LOCALE_MENU_HINT_SCAN_SATELLITE);
@@ -1216,6 +1362,8 @@ void CScanSetup::addScanMenuManualScan(CMenuWidget *manual_Scan, bool stest)
fillSatSelect(satSelect);
manual_Scan->addItem(satSelect);
mf = new CMenuDForwarder(LOCALE_SCANTS_SELECT_TP, true, NULL, new CTPSelectHandler(), "sat", CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN);
} else {
return;
}
mf->setHint("", LOCALE_MENU_HINT_SCAN_TPSELECT);
@@ -1355,7 +1503,7 @@ void CScanSetup::addScanMenuAutoScan(CMenuWidget *auto_Scan)
auto_Scan->addIntroItems();
const char *action;
if (r_system == DVB_C) { //cable
if (r_system == ALL_CABLE) { //cable
CMenuOptionStringChooser * cableSelect = new CMenuOptionStringChooser(LOCALE_CABLESETUP_PROVIDER, &scansettings.cableName, true, this, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED, true);
cableSelect->setHint("", LOCALE_MENU_HINT_SCAN_CABLE);
fillCableSelect(cableSelect);
@@ -1364,19 +1512,21 @@ void CScanSetup::addScanMenuAutoScan(CMenuWidget *auto_Scan)
mf->setHint("", LOCALE_MENU_HINT_SCAN_NID);
auto_Scan->addItem(mf);
action = "cauto";
} else if (r_system == DVB_T) {
CMenuOptionStringChooser * terrSelect = new CMenuOptionStringChooser(LOCALE_TERRESTRIALSETUP_PROVIDER, &scansettings.terrName, true, this, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED, true);
} else if (r_system == ALL_TERR) {
CMenuOptionStringChooser * terrSelect = new CMenuOptionStringChooser(LOCALE_TERRESTRIALSETUP_PROVIDER, &scansettings.terrestrialName, true, this, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED, true);
//terrSelect->setHint("", LOCALE_MENU_HINT_SCAN_CABLE);
fillCableSelect(terrSelect);
auto_Scan->addItem(terrSelect);
action = "tauto";
} else {
} else if (r_system == ALL_SAT) {
CMenuOptionStringChooser * satSelect = new CMenuOptionStringChooser(LOCALE_SATSETUP_SATELLITE, &scansettings.satName, true, this, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED, true);
satSelect->setHint("", LOCALE_MENU_HINT_SCAN_SATELLITE);
/* add configured satellites to satSelect */
fillSatSelect(satSelect);
auto_Scan->addItem(satSelect);
action = "sauto";
} else {
return;
}
auto_Scan->addItem(GenericMenuSeparatorLine);
@@ -1413,6 +1563,9 @@ void CScanSetup::addScanMenuCable(CMenuWidget *menu)
menu->addItem(GenericMenuSeparatorLine);
CMenuOptionChooser *delsys = new CMenuOptionChooser(LOCALE_EXTRA_TP_DELSYS, (int *)&scansettings.cable_TP_delsys, CABLESETUP_SCANTP_DELSYS, CABLESETUP_SCANTP_DELSYS_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++), "", true);
delsys->setHint("", LOCALE_MENU_HINT_SCAN_DELSYS);
CStringInput *freq = new CStringInput(LOCALE_EXTRA_TP_FREQ, &scansettings.cable_TP_freq, 6, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789");
CMenuForwarder *Freq = new CMenuDForwarder(LOCALE_EXTRA_TP_FREQ, true, scansettings.cable_TP_freq, freq, "", CRCInput::convertDigitToKey(shortCut++));
Freq->setHint("", LOCALE_MENU_HINT_SCAN_FREQ);
@@ -1421,12 +1574,14 @@ void CScanSetup::addScanMenuCable(CMenuWidget *menu)
CMenuForwarder *Rate = new CMenuDForwarder(LOCALE_EXTRA_TP_RATE, true, scansettings.cable_TP_rate, rate, "", CRCInput::convertDigitToKey(shortCut++));
Rate->setHint("", LOCALE_MENU_HINT_SCAN_RATE);
CMenuOptionChooser * mod_pol = new CMenuOptionChooser(LOCALE_EXTRA_TP_MOD, (int *)&scansettings.cable_TP_mod, SATSETUP_SCANTP_MOD, SATSETUP_SCANTP_MOD_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++));
mod_pol->setHint("", LOCALE_MENU_HINT_SCAN_MOD);
CMenuOptionChooser *mod = new CMenuOptionChooser(LOCALE_EXTRA_TP_MOD, (int *)&scansettings.cable_TP_mod, CABLESETUP_SCANTP_MOD, CABLESETUP_SCANTP_MOD_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++));
mod->setHint("", LOCALE_MENU_HINT_SCAN_MOD);
menu->addItem(delsys);
menu->addItem(Freq);
menu->addItem(Rate);
menu->addItem(mod_pol);
menu->addItem(mod);
CMenuOptionChooser *lcn = new CMenuOptionChooser(LOCALE_SATSETUP_LOGICAL_NUMBERS, (int *)&scansettings.scan_logical_numbers, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this, CRCInput::convertDigitToKey(shortCut++));
lcn->setHint("", LOCALE_MENU_HINT_SCAN_LOGICAL);
@@ -1454,45 +1609,90 @@ int CScanSetup::addScanOptionsItems(CMenuWidget *options_menu, const int &shortc
int shortCut = shortcut;
CMenuOptionChooser *fec = NULL;
CMenuOptionChooser *mod_pol = NULL;
CMenuOptionChooser *mod = NULL;
CMenuOptionChooser *pol = NULL;
CMenuOptionChooser *bw = NULL;
CMenuOptionChooser *gi = NULL;
CMenuOptionChooser *hi = NULL;
CMenuOptionChooser *delsys = NULL;
CMenuOptionChooser *coderateHP = NULL;
CMenuOptionChooser *coderateLP = NULL;
CMenuOptionChooser *tm = NULL;
CMenuForwarder *Freq = NULL;
CMenuForwarder *Rate = NULL;
if (r_system == DVB_S) {
if (r_system == ALL_SAT) {
delsys = new CMenuOptionChooser(LOCALE_EXTRA_TP_DELSYS, (int *)&scansettings.sat_TP_delsys, SATSETUP_SCANTP_DELSYS, SATSETUP_SCANTP_DELSYS_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++), "", true);
delsys->setHint("", LOCALE_MENU_HINT_SCAN_DELSYS);
CStringInput *freq = new CStringInput(LOCALE_EXTRA_TP_FREQ, &scansettings.sat_TP_freq, 8, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789");
Freq = new CMenuDForwarder(LOCALE_EXTRA_TP_FREQ, true, scansettings.sat_TP_freq, freq, "", CRCInput::convertDigitToKey(shortCut++));
Freq->setHint("", LOCALE_MENU_HINT_SCAN_FREQ);
CStringInput *rate = new CStringInput(LOCALE_EXTRA_TP_RATE, &scansettings.sat_TP_rate, 8, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789");
Rate = new CMenuDForwarder(LOCALE_EXTRA_TP_RATE, true, scansettings.sat_TP_rate, rate, "", CRCInput::convertDigitToKey(shortCut++));
Rate->setHint("", LOCALE_MENU_HINT_SCAN_RATE);
mod = new CMenuOptionChooser(LOCALE_EXTRA_TP_MOD, (int *)&scansettings.sat_TP_mod, SATSETUP_SCANTP_MOD, SATSETUP_SCANTP_MOD_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++), "", true);
mod->setHint("", LOCALE_MENU_HINT_SCAN_MOD);
fec = new CMenuOptionChooser(LOCALE_EXTRA_TP_FEC, (int *)&scansettings.sat_TP_fec, SATSETUP_SCANTP_FEC, SATSETUP_SCANTP_FEC_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++), "", true);
fec->setHint("", LOCALE_MENU_HINT_SCAN_FEC);
mod_pol = new CMenuOptionChooser(LOCALE_EXTRA_TP_POL, (int *)&scansettings.sat_TP_pol, SATSETUP_SCANTP_POL, SATSETUP_SCANTP_POL_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++));
mod_pol->setHint("", LOCALE_MENU_HINT_SCAN_POL);
} else if (r_system == DVB_C) {
pol = new CMenuOptionChooser(LOCALE_EXTRA_TP_POL, (int *)&scansettings.sat_TP_pol, SATSETUP_SCANTP_POL, SATSETUP_SCANTP_POL_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++));
pol->setHint("", LOCALE_MENU_HINT_SCAN_POL);
} else if (r_system == ALL_CABLE) {
delsys = new CMenuOptionChooser(LOCALE_EXTRA_TP_DELSYS, (int *)&scansettings.cable_TP_delsys, CABLESETUP_SCANTP_DELSYS, CABLESETUP_SCANTP_DELSYS_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++), "", true);
delsys->setHint("", LOCALE_MENU_HINT_SCAN_DELSYS);
CStringInput *freq = new CStringInput(LOCALE_EXTRA_TP_FREQ, &scansettings.cable_TP_freq, 6, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789");
Freq = new CMenuDForwarder(LOCALE_EXTRA_TP_FREQ, true, scansettings.cable_TP_freq, freq, "", CRCInput::convertDigitToKey(shortCut++));
Freq->setHint("", LOCALE_MENU_HINT_SCAN_FREQ);
CStringInput *rate = new CStringInput(LOCALE_EXTRA_TP_RATE, &scansettings.cable_TP_rate, 8, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789");
Rate = new CMenuDForwarder(LOCALE_EXTRA_TP_RATE, true, scansettings.cable_TP_rate, rate, "", CRCInput::convertDigitToKey(shortCut++));
Rate->setHint("", LOCALE_MENU_HINT_SCAN_RATE);
mod_pol = new CMenuOptionChooser(LOCALE_EXTRA_TP_MOD, (int *)&scansettings.cable_TP_mod, SATSETUP_SCANTP_MOD, SATSETUP_SCANTP_MOD_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++));
mod_pol->setHint("", LOCALE_MENU_HINT_SCAN_MOD);
} else if (r_system == DVB_T) {
mod = new CMenuOptionChooser(LOCALE_EXTRA_TP_MOD, (int *)&scansettings.cable_TP_mod, CABLESETUP_SCANTP_MOD, CABLESETUP_SCANTP_MOD_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++));
mod->setHint("", LOCALE_MENU_HINT_SCAN_MOD);
} else if (r_system == ALL_TERR) {
// TODO: more params ?
CStringInput *freq = new CStringInput(LOCALE_EXTRA_TP_FREQ, &scansettings.terr_TP_freq, 6, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789");
Freq = new CMenuDForwarder(LOCALE_EXTRA_TP_FREQ, true, scansettings.terr_TP_freq, freq, "", CRCInput::convertDigitToKey(shortCut++));
delsys = new CMenuOptionChooser(LOCALE_EXTRA_TP_DELSYS, (int *)&scansettings.terrestrial_TP_delsys, TERRSETUP_SCANTP_DELSYS, TERRSETUP_SCANTP_DELSYS_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++), "", true);
delsys->setHint("", LOCALE_MENU_HINT_SCAN_DELSYS);
CStringInput *freq = new CStringInput(LOCALE_EXTRA_TP_FREQ, &scansettings.terrestrial_TP_freq, 6, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789");
Freq = new CMenuDForwarder(LOCALE_EXTRA_TP_FREQ, true, scansettings.terrestrial_TP_freq, freq, "", CRCInput::convertDigitToKey(shortCut++));
Freq->setHint("", LOCALE_MENU_HINT_SCAN_FREQ);
bw = new CMenuOptionChooser(LOCALE_EXTRA_TP_BANDWIDTH, (int *)&scansettings.terrestrial_TP_bw, TERRSETUP_SCANTP_BW, TERRSETUP_SCANTP_BW_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++));
bw->setHint("", LOCALE_MENU_HINT_SCAN_BW);
mod = new CMenuOptionChooser(LOCALE_EXTRA_TP_CONSTELLATION, (int *)&scansettings.terrestrial_TP_constel, TERRSETUP_SCANTP_MOD, TERRSETUP_SCANTP_MOD_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++));
mod->setHint("", LOCALE_MENU_HINT_SCAN_MOD);
gi = new CMenuOptionChooser(LOCALE_EXTRA_TP_GI, (int *)&scansettings.terrestrial_TP_guard, TERRSETUP_SCANTP_GI, TERRSETUP_SCANTP_GI_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++));
gi->setHint("", LOCALE_MENU_HINT_SCAN_GI);
hi = new CMenuOptionChooser(LOCALE_EXTRA_TP_HIERARCHY, (int *)&scansettings.terrestrial_TP_hierarchy, TERRSETUP_SCANTP_HIERARCHY, TERRSETUP_SCANTP_HIERARCHY_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++));
hi->setHint("", LOCALE_MENU_HINT_SCAN_HIERARCHY);
coderateHP = new CMenuOptionChooser(LOCALE_EXTRA_TP_CODERATE_HP, (int *)&scansettings.terrestrial_TP_coderate_HP, TERRSETUP_SCANTP_FEC, TERRSETUP_SCANTP_FEC_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++), "", true);
coderateHP->setHint("", LOCALE_MENU_HINT_SCAN_FEC);
coderateLP = new CMenuOptionChooser(LOCALE_EXTRA_TP_CODERATE_LP, (int *)&scansettings.terrestrial_TP_coderate_LP, TERRSETUP_SCANTP_FEC, TERRSETUP_SCANTP_FEC_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++), "", true);
coderateLP->setHint("", LOCALE_MENU_HINT_SCAN_FEC);
tm = new CMenuOptionChooser(LOCALE_EXTRA_TP_TRANSMIT_MODE, (int *)&scansettings.terrestrial_TP_transmit_mode, TERRSETUP_SCANTP_TRANSMIT_MODE, TERRSETUP_SCANTP_TRANSMIT_MODE_COUNT, true, NULL, CRCInput::convertDigitToKey(shortCut++));
tm->setHint("", LOCALE_MENU_HINT_SCAN_TRANSMIT_MODE);
}
options_menu->addItem(Freq);
if (delsys)
options_menu->addItem(delsys);
if (Freq)
options_menu->addItem(Freq);
if (Rate)
options_menu->addItem(Rate);
if (bw)
options_menu->addItem(bw);
if (mod)
options_menu->addItem(mod);
if (fec)
options_menu->addItem(fec);
if (mod_pol)
options_menu->addItem(mod_pol);
if (gi)
options_menu->addItem(gi);
if (hi)
options_menu->addItem(hi);
if (coderateHP)
options_menu->addItem(coderateHP);
if (coderateLP)
options_menu->addItem(coderateLP);
if (tm)
options_menu->addItem(tm);
if (pol)
options_menu->addItem(pol);
return shortCut;
}
@@ -1582,13 +1782,16 @@ bool CScanSetup::changeNotify(const neutrino_locale_t OptionName, void * /*data*
else if(ARE_LOCALES_EQUAL(OptionName, LOCALE_SATSETUP_FE_MODE)) {
printf("[neutrino] CScanSetup::%s: fe%d mode %d master %d\n", __FUNCTION__, fenumber, femode, femaster);
CFrontend * fe = CFEManager::getInstance()->getFE(fenumber);
if (fe->getMode() == femode)
if (fe && fe->getMode() == femode)
return ret;
modestr[fenumber] = g_Locale->getText(getModeLocale(femode));
fe_restart = true;
fe->setMode(femode);
if (fe && fe->getType() == FE_QPSK) {
if (fe)
fe->setMode(femode);
if (fe && fe->hasSat()) {
if (linkfe)
linkfe->setActive(CFrontend::linked(femode));
/* leave diseqc type enabled for TWIN in case user need different unicable setup */
@@ -1664,25 +1867,33 @@ void CScanSetup::updateManualSettings()
transponder_list_t::iterator tI;
tI = transponders.find(channel->getTransponderId());
if(tI != transponders.end()) {
CFrontend * frontend = CFEManager::getInstance()->getLiveFE();
switch (frontend->getType()) {
case FE_QPSK:
scansettings.sat_TP_freq = to_string(tI->second.feparams.dvb_feparams.frequency);
scansettings.sat_TP_rate = to_string(tI->second.feparams.dvb_feparams.u.qpsk.symbol_rate);
scansettings.sat_TP_fec = tI->second.feparams.dvb_feparams.u.qpsk.fec_inner;
scansettings.sat_TP_pol = tI->second.polarization;
scansettings.satName = CServiceManager::getInstance()->GetSatelliteName(channel->getSatellitePosition());
break;
case FE_QAM:
scansettings.cable_TP_freq = to_string(tI->second.feparams.dvb_feparams.frequency);
scansettings.cable_TP_rate = to_string(tI->second.feparams.dvb_feparams.u.qam.symbol_rate);
scansettings.cable_TP_fec = tI->second.feparams.dvb_feparams.u.qam.fec_inner;
scansettings.cable_TP_mod = tI->second.feparams.dvb_feparams.u.qam.modulation;
scansettings.cableName = CServiceManager::getInstance()->GetSatelliteName(channel->getSatellitePosition());
break;
case FE_OFDM:
case FE_ATSC:
break;
// CFrontend *frontend = CFEManager::getInstance()->getLiveFE();
// FIXME: should this be live fe current delsys or delsys from tuned TP
if (CFrontend::isSat(tI->second.feparams.delsys)) {
scansettings.sat_TP_freq = to_string(tI->second.feparams.frequency);
scansettings.sat_TP_rate = to_string(tI->second.feparams.symbol_rate);
scansettings.sat_TP_fec = tI->second.feparams.fec_inner;
scansettings.sat_TP_pol = tI->second.feparams.polarization;
scansettings.sat_TP_delsys = tI->second.feparams.delsys;
scansettings.satName = CServiceManager::getInstance()->GetSatelliteName(channel->getSatellitePosition());
} else if (CFrontend::isCable(tI->second.feparams.delsys)) {
scansettings.cable_TP_freq = to_string(tI->second.feparams.frequency);
scansettings.cable_TP_rate = to_string(tI->second.feparams.symbol_rate);
scansettings.cable_TP_fec = tI->second.feparams.fec_inner;
scansettings.cable_TP_mod = tI->second.feparams.modulation;
scansettings.cable_TP_delsys = tI->second.feparams.delsys;
scansettings.cableName = CServiceManager::getInstance()->GetSatelliteName(channel->getSatellitePosition());
} else if (CFrontend::isTerr(tI->second.feparams.delsys)) {
scansettings.terrestrial_TP_freq = to_string(tI->second.feparams.frequency);
scansettings.terrestrial_TP_bw = tI->second.feparams.bandwidth;
scansettings.terrestrial_TP_constel = tI->second.feparams.modulation;
scansettings.terrestrial_TP_hierarchy = tI->second.feparams.hierarchy;
scansettings.terrestrial_TP_delsys = tI->second.feparams.delsys;
scansettings.terrestrial_TP_transmit_mode = tI->second.feparams.transmission_mode;
scansettings.terrestrial_TP_coderate_HP = tI->second.feparams.code_rate_HP;
scansettings.terrestrial_TP_coderate_LP = tI->second.feparams.code_rate_LP;
scansettings.terrestrialName = CServiceManager::getInstance()->GetSatelliteName(channel->getSatellitePosition());
}
}
}
@@ -1707,7 +1918,7 @@ int CTPSelectHandler::exec(CMenuTarget* parent, const std::string &actionkey)
if (actionkey == "sat")
name = scansettings.satName;
else if (actionkey == "terrestrial")
name = scansettings.terrName;
name = scansettings.terrestrialName;
else
name = scansettings.cableName;
@@ -1763,27 +1974,43 @@ int CTPSelectHandler::exec(CMenuTarget* parent, const std::string &actionkey)
tmpI = tmplist.find(select);
printf("CTPSelectHandler::exec: selected TP: freq %d pol %d SR %d\n", tmpI->second.feparams.dvb_feparams.frequency,
tmpI->second.polarization, tmpI->second.feparams.dvb_feparams.u.qpsk.symbol_rate);
switch (tmpI->second.deltype) {
case FE_QPSK:
scansettings.sat_TP_freq = to_string(tmpI->second.feparams.dvb_feparams.frequency);
scansettings.sat_TP_rate = to_string(tmpI->second.feparams.dvb_feparams.u.qpsk.symbol_rate);
scansettings.sat_TP_fec = tmpI->second.feparams.dvb_feparams.u.qpsk.fec_inner;
scansettings.sat_TP_pol = tmpI->second.polarization;
break;
case FE_QAM:
scansettings.cable_TP_freq = to_string(tmpI->second.feparams.dvb_feparams.frequency);
scansettings.cable_TP_rate = to_string(tmpI->second.feparams.dvb_feparams.u.qam.symbol_rate);
scansettings.cable_TP_fec = tmpI->second.feparams.dvb_feparams.u.qam.fec_inner;
scansettings.cable_TP_mod = tmpI->second.feparams.dvb_feparams.u.qam.modulation;
break;
case FE_OFDM:
scansettings.terr_TP_freq = to_string(tmpI->second.feparams.dvb_feparams.frequency);
break;
case FE_ATSC:
break;
if (CFrontend::isSat(tmpI->second.feparams.delsys)) {
printf("CTPSelectHandler::exec: selected TP: freq %d pol %d SR %d\n",
tmpI->second.feparams.frequency,
tmpI->second.feparams.polarization,
tmpI->second.feparams.symbol_rate);
scansettings.sat_TP_freq = to_string(tmpI->second.feparams.frequency);
scansettings.sat_TP_rate = to_string(tmpI->second.feparams.symbol_rate);
scansettings.sat_TP_fec = tmpI->second.feparams.fec_inner;
scansettings.sat_TP_pol = tmpI->second.feparams.polarization;
}
else if (CFrontend::isCable(tmpI->second.feparams.delsys)) {
printf("CTPSelectHandler::exec: selected TP: freq %d SR %d FEC %d\n",
tmpI->second.feparams.frequency,
tmpI->second.feparams.symbol_rate,
tmpI->second.feparams.fec_inner);
scansettings.cable_TP_freq = to_string(tmpI->second.feparams.frequency);
scansettings.cable_TP_rate = to_string(tmpI->second.feparams.symbol_rate);
scansettings.cable_TP_fec = tmpI->second.feparams.fec_inner;
scansettings.cable_TP_mod = tmpI->second.feparams.modulation;
}
else if (CFrontend::isTerr(tmpI->second.feparams.delsys)) {
printf("CTPSelectHandler::exec: selected TP: freq %d BW %d CON %d\n",
tmpI->second.feparams.frequency,
tmpI->second.feparams.bandwidth,
tmpI->second.feparams.modulation);
scansettings.terrestrial_TP_freq = to_string(tmpI->second.feparams.frequency);
scansettings.terrestrial_TP_bw = tmpI->second.feparams.bandwidth;
scansettings.terrestrial_TP_constel = tmpI->second.feparams.modulation;
scansettings.terrestrial_TP_hierarchy = tmpI->second.feparams.hierarchy;
scansettings.terrestrial_TP_delsys = tmpI->second.feparams.delsys;
scansettings.terrestrial_TP_transmit_mode = tmpI->second.feparams.transmission_mode;
scansettings.terrestrial_TP_coderate_HP = tmpI->second.feparams.code_rate_HP;
scansettings.terrestrial_TP_coderate_LP = tmpI->second.feparams.code_rate_LP;
//scansettings.terrestrialName = CServiceManager::getInstance()->GetSatelliteName(channel->getSatellitePosition());
}
}

View File

@@ -106,6 +106,7 @@ class CScanSetup : public CMenuTarget, public CChangeObserver
int showScanMenuSatFind();
void fillSatSelect(CMenuOptionStringChooser *select);
void fillCableSelect(CMenuOptionStringChooser *select);
void fillTerrSelect(CMenuOptionStringChooser *select);
neutrino_locale_t getModeLocale(int mode);
int showScanMenuFrontendSetup();

View File

@@ -257,7 +257,7 @@ void CStreamInfo2::paint_signal_fe_box(int _x, int _y, int w, int h)
int tuner = 1 + frontend->getNumber();
char tname[255];
snprintf(tname, sizeof(tname), "%s: %d: %s", g_Locale->getText(LOCALE_STREAMINFO_SIGNAL), tuner, frontend->getInfo()->name);
snprintf(tname, sizeof(tname), "%s: %d: %s", g_Locale->getText(LOCALE_STREAMINFO_SIGNAL), tuner, frontend->getName());
g_Font[font_small]->RenderString(_x, _y+iheight+15, width-_x-10, tname /*tuner_name.c_str()*/, COL_INFOBAR_TEXT);
@@ -565,11 +565,11 @@ void CStreamInfo2::paint_techinfo(int xpos, int ypos)
//satellite
ypos += iheight;
if(t.deltype == FE_QPSK)
if (CFrontend::isSat(t.feparams.delsys))
sprintf (buf, "%s:",g_Locale->getText (LOCALE_SATSETUP_SATELLITE));//swiped locale
else if(t.deltype == FE_QAM)
else if (CFrontend::isCable(t.feparams.delsys))
sprintf (buf, "%s:",g_Locale->getText (LOCALE_CHANNELLIST_PROVS));
else
else if (CFrontend::isTerr(t.feparams.delsys))
snprintf (buf, sizeof(buf), "%s:",g_Locale->getText (LOCALE_TERRESTRIALSETUP_AREA));
g_Font[font_info]->RenderString(xpos, ypos, box_width, buf, COL_INFOBAR_TEXT);
@@ -589,7 +589,7 @@ void CStreamInfo2::paint_techinfo(int xpos, int ypos)
ypos += iheight;
scaling = 27000;
if (t.deltype == FE_QPSK && t.feparams.dvb_feparams.u.qpsk.fec_inner < FEC_S2_QPSK_1_2)
if (CFrontend::isSat(t.feparams.delsys) && t.feparams.fec_inner < FEC_S2_QPSK_1_2)
scaling = 15000;
sprintf (buf, "%s",g_Locale->getText (LOCALE_SCANTS_FREQDATA));