summaryrefslogtreecommitdiff
path: root/channels.c
diff options
context:
space:
mode:
Diffstat (limited to 'channels.c')
-rw-r--r--channels.c238
1 files changed, 82 insertions, 156 deletions
diff --git a/channels.c b/channels.c
index dd1967f..9730a43 100644
--- a/channels.c
+++ b/channels.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: channels.c 1.56 2008/01/27 13:59:53 kls Exp $
+ * $Id: channels.c 1.59 2008/02/10 15:45:38 kls Exp $
*/
#include "channels.h"
@@ -18,117 +18,70 @@
// format characters in order to allow any number of blanks after a numeric
// value!
-// -- Channel Parameter Maps -------------------------------------------------
+// --- Channel Parameter Maps ------------------------------------------------
const tChannelParameterMap InversionValues[] = {
- { 0, DVBFE_INVERSION_OFF, trNOOP("off") },
- { 1, DVBFE_INVERSION_ON, trNOOP("on") },
- { 999, DVBFE_INVERSION_AUTO },
+ { 0, INVERSION_OFF },
+ { 1, INVERSION_ON },
+ { 999, INVERSION_AUTO },
{ -1 }
};
const tChannelParameterMap BandwidthValues[] = {
- { 5, DVBFE_BANDWIDTH_5_MHZ, "5 MHz" },
- { 6, DVBFE_BANDWIDTH_6_MHZ, "6 MHz" },
- { 7, DVBFE_BANDWIDTH_7_MHZ, "7 MHz" },
- { 8, DVBFE_BANDWIDTH_8_MHZ, "8 MHz" },
- { 999, DVBFE_BANDWIDTH_AUTO },
+ { 6, BANDWIDTH_6_MHZ },
+ { 7, BANDWIDTH_7_MHZ },
+ { 8, BANDWIDTH_8_MHZ },
+ { 999, BANDWIDTH_AUTO },
{ -1 }
};
const tChannelParameterMap CoderateValues[] = {
- { 0, DVBFE_FEC_NONE, trNOOP("none") },
- { 12, DVBFE_FEC_1_2, "1/2" },
- { 13, DVBFE_FEC_1_3, "1/3" },
- { 14, DVBFE_FEC_1_4, "1/4" },
- { 23, DVBFE_FEC_2_3, "2/3" },
- { 25, DVBFE_FEC_2_5, "2/5" },
- { 34, DVBFE_FEC_3_4, "3/4" },
- { 35, DVBFE_FEC_3_5, "3/5" },
- { 45, DVBFE_FEC_4_5, "4/5" },
- { 56, DVBFE_FEC_5_6, "5/6" },
- { 67, DVBFE_FEC_6_7, "6/7" },
- { 78, DVBFE_FEC_7_8, "7/8" },
- { 89, DVBFE_FEC_8_9, "8/9" },
- { 910, DVBFE_FEC_9_10, "9/10" },
- { 999, DVBFE_FEC_AUTO },
+ { 0, FEC_NONE },
+ { 12, FEC_1_2 },
+ { 23, FEC_2_3 },
+ { 34, FEC_3_4 },
+ { 45, FEC_4_5 },
+ { 56, FEC_5_6 },
+ { 67, FEC_6_7 },
+ { 78, FEC_7_8 },
+ { 89, FEC_8_9 },
+ { 999, FEC_AUTO },
{ -1 }
};
const tChannelParameterMap ModulationValues[] = {
- { 0, DVBFE_MOD_NONE, trNOOP("none") },
- { 4, DVBFE_MOD_QAM4, "QAM4" },
- { 16, DVBFE_MOD_QAM16, "QAM16" },
- { 32, DVBFE_MOD_QAM32, "QAM32" },
- { 64, DVBFE_MOD_QAM64, "QAM64" },
- { 128, DVBFE_MOD_QAM128, "QAM128" },
- { 256, DVBFE_MOD_QAM256, "QAM256" },
- { 512, DVBFE_MOD_QAM512, "QAM512" },
- {1024, DVBFE_MOD_QAM1024, "QAM1024" },
- { 1, DVBFE_MOD_BPSK, "BPSK" },
- { 2, DVBFE_MOD_QPSK, "QPSK" },
- { 3, DVBFE_MOD_OQPSK, "OQPSK" },
- { 5, DVBFE_MOD_8PSK, "8PSK" },
- { 6, DVBFE_MOD_16APSK, "16APSK" },
- { 7, DVBFE_MOD_32APSK, "32APSK" },
- { 8, DVBFE_MOD_OFDM, "OFDM" },
- { 9, DVBFE_MOD_COFDM, "COFDM" },
- { 10, DVBFE_MOD_VSB8, "VSB8" },
- { 11, DVBFE_MOD_VSB16, "VSB16" },
- { 998, DVBFE_MOD_QAMAUTO, "QAMAUTO" },
- { 999, DVBFE_MOD_AUTO },
- { -1 }
- };
-
-const tChannelParameterMap SystemValues[] = {
- { 0, DVBFE_DELSYS_DVBS, "DVB-S" },
- { 1, DVBFE_DELSYS_DVBS2, "DVB-S2" },
+ { 0, QPSK },
+ { 16, QAM_16 },
+ { 32, QAM_32 },
+ { 64, QAM_64 },
+ { 128, QAM_128 },
+ { 256, QAM_256 },
+ { 999, QAM_AUTO },
{ -1 }
};
const tChannelParameterMap TransmissionValues[] = {
- { 2, DVBFE_TRANSMISSION_MODE_2K, "2K" },
- { 4, DVBFE_TRANSMISSION_MODE_4K, "4K" },
- { 8, DVBFE_TRANSMISSION_MODE_8K, "8K" },
- { 999, DVBFE_TRANSMISSION_MODE_AUTO },
+ { 2, TRANSMISSION_MODE_2K },
+ { 8, TRANSMISSION_MODE_8K },
+ { 999, TRANSMISSION_MODE_AUTO },
{ -1 }
};
const tChannelParameterMap GuardValues[] = {
- { 4, DVBFE_GUARD_INTERVAL_1_4, "1/4" },
- { 8, DVBFE_GUARD_INTERVAL_1_8, "1/8" },
- { 16, DVBFE_GUARD_INTERVAL_1_16, "1/16" },
- { 32, DVBFE_GUARD_INTERVAL_1_32, "1/32" },
- { 999, DVBFE_GUARD_INTERVAL_AUTO },
+ { 4, GUARD_INTERVAL_1_4 },
+ { 8, GUARD_INTERVAL_1_8 },
+ { 16, GUARD_INTERVAL_1_16 },
+ { 32, GUARD_INTERVAL_1_32 },
+ { 999, GUARD_INTERVAL_AUTO },
{ -1 }
};
const tChannelParameterMap HierarchyValues[] = {
- { 0, DVBFE_HIERARCHY_OFF, trNOOP("off") },
- { 1, DVBFE_HIERARCHY_ON, trNOOP("on") },
- { 999, DVBFE_HIERARCHY_AUTO },
- { -1 }
- };
-
-const tChannelParameterMap AlphaValues[] = {
- { 0, 0 },
- { 1, DVBFE_ALPHA_1 },
- { 2, DVBFE_ALPHA_2 },
- { 4, DVBFE_ALPHA_4 },
- { -1 }
- };
-
-const tChannelParameterMap PriorityValues[] = {
- { 0, DVBFE_STREAM_PRIORITY_HP, trNOOP("high") },
- { 1, DVBFE_STREAM_PRIORITY_LP, trNOOP("low") },
- { -1 }
- };
-
-const tChannelParameterMap RollOffValues[] = {
- { 0, DVBFE_ROLLOFF_UNKNOWN },
- { 20, DVBFE_ROLLOFF_20, "0.20" },
- { 25, DVBFE_ROLLOFF_25, "0.25" },
- { 35, DVBFE_ROLLOFF_35, "0.35" },
+ { 0, HIERARCHY_NONE },
+ { 1, HIERARCHY_1 },
+ { 2, HIERARCHY_2 },
+ { 4, HIERARCHY_4 },
+ { 999, HIERARCHY_AUTO },
{ -1 }
};
@@ -154,14 +107,11 @@ int DriverIndex(int Value, const tChannelParameterMap *Map)
return -1;
}
-int MapToUser(int Value, const tChannelParameterMap *Map, const char **String)
+int MapToUser(int Value, const tChannelParameterMap *Map)
{
int n = DriverIndex(Value, Map);
- if (n >= 0) {
- if (String)
- *String = tr(Map[n].userString);
+ if (n >= 0)
return Map[n].userValue;
- }
return -1;
}
@@ -173,7 +123,7 @@ int MapToDriver(int Value, const tChannelParameterMap *Map)
return -1;
}
-// -- tChannelID -------------------------------------------------------------
+// --- tChannelID ------------------------------------------------------------
const tChannelID tChannelID::InvalidID;
@@ -208,7 +158,7 @@ tChannelID &tChannelID::ClrPolarization(void)
return *this;
}
-// -- cChannel ---------------------------------------------------------------
+// --- cChannel --------------------------------------------------------------
cChannel::cChannel(void)
{
@@ -217,18 +167,14 @@ cChannel::cChannel(void)
provider = strdup("");
portalName = strdup("");
memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__);
- inversion = DVBFE_INVERSION_AUTO;
- bandwidth = DVBFE_BANDWIDTH_AUTO;
- coderateH = DVBFE_FEC_AUTO;
- coderateL = DVBFE_FEC_AUTO;
- modulation = DVBFE_MOD_AUTO;
- system = DVBFE_DELSYS_DVBS;
- transmission = DVBFE_TRANSMISSION_MODE_AUTO;
- guard = DVBFE_GUARD_INTERVAL_AUTO;
- hierarchy = DVBFE_HIERARCHY_AUTO;
- alpha = 0;
- priority = DVBFE_STREAM_PRIORITY_HP;
- rollOff = DVBFE_ROLLOFF_UNKNOWN;
+ inversion = INVERSION_AUTO;
+ bandwidth = BANDWIDTH_AUTO;
+ coderateH = FEC_AUTO;
+ coderateL = FEC_AUTO;
+ modulation = QAM_AUTO;
+ transmission = TRANSMISSION_MODE_AUTO;
+ guard = GUARD_INTERVAL_AUTO;
+ hierarchy = HIERARCHY_AUTO;
modification = CHANNELMOD_NONE;
schedule = NULL;
linkChannels = NULL;
@@ -331,17 +277,13 @@ void cChannel::CopyTransponderData(const cChannel *Channel)
coderateH = Channel->coderateH;
coderateL = Channel->coderateL;
modulation = Channel->modulation;
- system = Channel->system;
transmission = Channel->transmission;
guard = Channel->guard;
hierarchy = Channel->hierarchy;
- alpha = Channel->alpha;
- priority = Channel->priority;
- rollOff = Channel->rollOff;
}
}
-bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH, int Modulation, int System, int RollOff)
+bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH)
{
// Workarounds for broadcaster stupidity:
// Some providers broadcast the transponder frequency of their channels with two different
@@ -355,22 +297,19 @@ bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarizatio
if (abs(srate - Srate) <= 1)
Srate = srate;
- if (source != Source || frequency != Frequency || polarization != Polarization || srate != Srate || coderateH != CoderateH || modulation != Modulation || system != System || rollOff != RollOff) {
- cString OldParameters = ParametersToString();
+ if (source != Source || frequency != Frequency || polarization != Polarization || srate != Srate || coderateH != CoderateH) {
+ if (Number()) {
+ dsyslog("changing transponder data of channel %d from %s:%d:%c:%d:%d to %s:%d:%c:%d:%d", Number(), *cSource::ToString(source), frequency, polarization, srate, coderateH, *cSource::ToString(Source), Frequency, Polarization, Srate, CoderateH);
+ modification |= CHANNELMOD_TRANSP;
+ Channels.SetModified();
+ }
source = Source;
frequency = Frequency;
polarization = Polarization;
srate = Srate;
coderateH = CoderateH;
- modulation = Modulation;
- system = System;
- rollOff = RollOff;
+ modulation = QPSK;
schedule = NULL;
- if (Number()) {
- dsyslog("changing transponder data of channel %d from %d:%s:%s:%d to %d:%s:%s:%d", Number(), frequency, *OldParameters, *cSource::ToString(source), srate, Frequency, *ParametersToString(), *cSource::ToString(Source), Srate);
- modification |= CHANNELMOD_TRANSP;
- Channels.SetModified();
- }
}
return true;
}
@@ -378,26 +317,29 @@ bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarizatio
bool cChannel::SetCableTransponderData(int Source, int Frequency, int Modulation, int Srate, int CoderateH)
{
if (source != Source || frequency != Frequency || modulation != Modulation || srate != Srate || coderateH != CoderateH) {
- cString OldParameters = ParametersToString();
+ if (Number()) {
+ dsyslog("changing transponder data of channel %d from %s:%d:%d:%d:%d to %s:%d:%d:%d:%d", Number(), *cSource::ToString(source), frequency, modulation, srate, coderateH, *cSource::ToString(Source), Frequency, Modulation, Srate, CoderateH);
+ modification |= CHANNELMOD_TRANSP;
+ Channels.SetModified();
+ }
source = Source;
frequency = Frequency;
modulation = Modulation;
srate = Srate;
coderateH = CoderateH;
schedule = NULL;
- if (Number()) {
- dsyslog("changing transponder data of channel %d from %d:%s:%s:%d to %d:%s:%s:%d", Number(), frequency, *OldParameters, *cSource::ToString(source), srate, Frequency, *ParametersToString(), *cSource::ToString(Source), Srate);
- modification |= CHANNELMOD_TRANSP;
- Channels.SetModified();
- }
}
return true;
}
-bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CoderateH, int CoderateL, int Guard, int Transmission, int Alpha, int Priority)
+bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CoderateH, int CoderateL, int Guard, int Transmission)
{
- if (source != Source || frequency != Frequency || bandwidth != Bandwidth || modulation != Modulation || hierarchy != Hierarchy || coderateH != CoderateH || coderateL != CoderateL || guard != Guard || transmission != Transmission || alpha != Alpha || priority != Priority) {
- cString OldParameters = ParametersToString();
+ if (source != Source || frequency != Frequency || bandwidth != Bandwidth || modulation != Modulation || hierarchy != Hierarchy || coderateH != CoderateH || coderateL != CoderateL || guard != Guard || transmission != Transmission) {
+ if (Number()) {
+ dsyslog("changing transponder data of channel %d from %s:%d:%d:%d:%d:%d:%d:%d:%d to %s:%d:%d:%d:%d:%d:%d:%d:%d", Number(), *cSource::ToString(source), frequency, bandwidth, modulation, hierarchy, coderateH, coderateL, guard, transmission, *cSource::ToString(Source), Frequency, Bandwidth, Modulation, Hierarchy, CoderateH, CoderateL, Guard, Transmission);
+ modification |= CHANNELMOD_TRANSP;
+ Channels.SetModified();
+ }
source = Source;
frequency = Frequency;
bandwidth = Bandwidth;
@@ -407,14 +349,7 @@ bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth,
coderateL = CoderateL;
guard = Guard;
transmission = Transmission;
- alpha = Alpha;
- priority = Priority;
schedule = NULL;
- if (Number()) {
- dsyslog("changing transponder data of channel %d from %d:%s:%s to %d:%s:%s", Number(), frequency, *OldParameters, *cSource::ToString(source), Frequency, *ParametersToString(), *cSource::ToString(Source));
- modification |= CHANNELMOD_TRANSP;
- Channels.SetModified();
- }
}
return true;
}
@@ -662,17 +597,13 @@ cString cChannel::ParametersToString(void) const
char *q = buffer;
*q = 0;
ST(" S ") q += sprintf(q, "%c", polarization);
- ST(" T") q += PrintParameter(q, 'A', MapToUser(alpha, AlphaValues));
- ST(" T") q += PrintParameter(q, 'B', MapToUser(bandwidth, BandwidthValues));
+ ST("CST") q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
ST("CST") q += PrintParameter(q, 'C', MapToUser(coderateH, CoderateValues));
ST(" T") q += PrintParameter(q, 'D', MapToUser(coderateL, CoderateValues));
- ST(" T") q += PrintParameter(q, 'G', MapToUser(guard, GuardValues));
- ST("CST") q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
- ST("CST") q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
- ST(" S ") q += PrintParameter(q, 'O', MapToUser(rollOff, RollOffValues));
- ST(" T") q += PrintParameter(q, 'P', MapToUser(priority, PriorityValues));
- ST(" S ") q += PrintParameter(q, 'S', MapToUser(system, SystemValues));
+ ST("C T") q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
+ ST(" T") q += PrintParameter(q, 'B', MapToUser(bandwidth, BandwidthValues));
ST(" T") q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
+ ST(" T") q += PrintParameter(q, 'G', MapToUser(guard, GuardValues));
ST(" T") q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues));
return buffer;
}
@@ -697,7 +628,6 @@ bool cChannel::StringToParameters(const char *s)
{
while (s && *s) {
switch (toupper(*s)) {
- case 'A': s = ParseParameter(s, alpha, AlphaValues); break;
case 'B': s = ParseParameter(s, bandwidth, BandwidthValues); break;
case 'C': s = ParseParameter(s, coderateH, CoderateValues); break;
case 'D': s = ParseParameter(s, coderateL, CoderateValues); break;
@@ -706,11 +636,7 @@ bool cChannel::StringToParameters(const char *s)
case 'I': s = ParseParameter(s, inversion, InversionValues); break;
case 'L': polarization = *s++; break;
case 'M': s = ParseParameter(s, modulation, ModulationValues); break;
- case 'Z':// for compatibility with the original DVB-S2 patch - may be removed in future versions
- case 'O': s = ParseParameter(s, rollOff, RollOffValues); break;
- case 'P': s = ParseParameter(s, priority, PriorityValues); break;
case 'R': polarization = *s++; break;
- case 'S': s = ParseParameter(s, system, SystemValues); break;
case 'T': s = ParseParameter(s, transmission, TransmissionValues); break;
case 'V': polarization = *s++; break;
case 'Y': s = ParseParameter(s, hierarchy, HierarchyValues); break;
@@ -732,12 +658,12 @@ cString cChannel::ToText(const cChannel *Channel)
q += sprintf(q, ";%s", Channel->provider);
*q = 0;
strreplace(FullName, ':', '|');
- char *buffer;
+ cString buffer;
if (Channel->groupSep) {
if (Channel->number)
- asprintf(&buffer, ":@%d %s\n", Channel->number, FullName);
+ buffer = cString::sprintf(":@%d %s\n", Channel->number, FullName);
else
- asprintf(&buffer, ":%s\n", FullName);
+ buffer = cString::sprintf(":%s\n", FullName);
}
else {
char vpidbuf[32];
@@ -759,9 +685,9 @@ cString cChannel::ToText(const cChannel *Channel)
q = caidbuf;
q += IntArrayToString(q, Channel->caids, 16);
*q = 0;
- asprintf(&buffer, "%s:%d:%s:%s:%d:%s:%s:%d:%s:%d:%d:%d:%d\n", FullName, Channel->frequency, *Channel->ParametersToString(), *cSource::ToString(Channel->source), Channel->srate, vpidbuf, apidbuf, Channel->tpid, caidbuf, Channel->sid, Channel->nid, Channel->tid, Channel->rid);
+ buffer = cString::sprintf("%s:%d:%s:%s:%d:%s:%s:%d:%s:%d:%d:%d:%d\n", FullName, Channel->frequency, *Channel->ParametersToString(), *cSource::ToString(Channel->source), Channel->srate, vpidbuf, apidbuf, Channel->tpid, caidbuf, Channel->sid, Channel->nid, Channel->tid, Channel->rid);
}
- return cString(buffer, true);
+ return buffer;
}
cString cChannel::ToText(void) const
@@ -924,7 +850,7 @@ bool cChannel::Save(FILE *f)
return fprintf(f, "%s", *ToText()) > 0;
}
-// -- cChannelSorter ---------------------------------------------------------
+// --- cChannelSorter --------------------------------------------------------
class cChannelSorter : public cListObject {
public:
@@ -940,7 +866,7 @@ public:
}
};
-// -- cChannels --------------------------------------------------------------
+// --- cChannels -------------------------------------------------------------
cChannels Channels;