Commit 8b5d4040 authored by Klaus Schmidinger's avatar Klaus Schmidinger

Version 1.1.16

- Fixed saving the polarization parameter of channels that have a number in the
  'source' parameter (thanks to Peter Seyringer for reporting this one).
- Updated 'channels.conf.terr' (thanks to Andy Carter).
- Updated 'channels.conf.cable' (thanks to Achim Lange).
- First step towards a "unique channel ID". The channel ID is a human readable
  string, made up from several parameters of the channel's definition in the file
  'channels.conf' (see man vdr(5) for details).
  In order for the "unique channel ID" to work, all channel definitions now must
  be unique with respect to the combination of their Source, Frequency and SID
  parameters. You may have to fix your 'channels.conf' manually if there are error
  messages in the log file when loading it. BE SURE TO MAKE A BACKUP COPY OF YOUR
  'channels.conf' AND 'timers.conf' FILE BEFORE SWITCHING TO THIS VERSION, AND CHECK
  VERY CAREFULLY WHETHER YOUR TIMERS ARE STILL SET TO THE RIGHT CHANNELS!
  When reading an existing 'timers.conf', the channels will be identified as before
  by their numbers. As soon as this file is written back, the channel numbers will
  be replaced by the channel IDs. After that it is possible to manually edit the
  'channels.conf' file and rearrange the channels without breaking the timers.
  Note that you can still define new timers manually by using the channel number.
  VDR will correctly identify the 'channel' parameter in a timer definition and
  use it as a channel number or a channel ID, respectively. Also, the SVDRP commands
  that return timer definitions will list them with channel numbers in order to
  stay compatible with existing applications.
  The channel ID is also used in the 'epg.data' file to allow EPG information from
  different sources to be stored, which would previously have been mixed up in case
  they were using the same 'service ID'. Note that the contents of an existing
  'epg.data' file from a previous version will be silently ignored, since it doesn't
  contain the new channel IDs. When inserting EPG data into VDR via SVDRP you now also
  need to use the channel IDs.
  Currently the EPG data received from the DVB data stream only uses the 'Source'
  and 'Service ID' part of the channel ID. This makes it work for channels with
  the same service IDs on different sources (like satellites, cable or terrestrial).
  However, it doesn't work yet if the service IDs are not unique within a specific
  source. This will be fixed later.
- Added missing SID parameters to 'channels.conf'. Some channels have been removed
  since they are apparently no longer broadcasted.
- Removed dropping EPG events from "other" streams that have a duration of 86400
  seconds or more (was introduced in version 1.1.10). This has become obsolete by
  the modification in version 1.1.13, which fixed fetching the current/next information
  to handle cases where the duration of an event is set wrongly and would last beyond
  the start time of the next event. Besides, the change in 1.1.10 broke handling EPG
  data for NVOD channels.
- Fixed a compiler warning regarding cMenuChannels::Del() and MenuTimers::Del() hiding
  the base class virtual functions.
parent 1a8a0816
......@@ -302,6 +302,7 @@ Mirko G
Achim Lange <Achim_Lange@t-online.de>
for replacing 'killproc' with 'killall' in 'runvdr' to make it work on Debian
for reporting a bug in switching back the replay mode display in time shift mode
for his help in keeping 'channels.conf.cable' up to date
Klaus Wolf <klaus@wolfsoft.de>
for reporting a bug in restoring the CICAM values for a fourth DVB card
......@@ -441,6 +442,7 @@ Lauri Tischler <lauri.tischler@efore.fi>
Andy Carter <fruit@ukgateway.net>
for helping to test new DVB-T handling
for his help in keeping 'channels.conf.terr' up to date
Robert Schiele <rschiele@uni-mannheim.de>
for his help in keeping 'channels.conf.cable' up to date
......@@ -460,3 +462,7 @@ Dennis Noordsij <dennis.noordsij@wiral.com>
Steffen Barszus <st_barszus@gmx.de>
for reporting a bug in switching audio tracks in 'Transfer Mode' on the primary DVB device
Peter Seyringer <e9425234@student.tuwien.ac.at>
for reporting a bug in saving the polarization parameter of channels that have a
number in the 'source' parameter
......@@ -249,7 +249,7 @@ Video Disk Recorder Revision History
- The EIT information is now gathered in a separate thread.
- The sytem time can now be synchronized to the time broadcast in the DVB data
stream. This can be enabled in the "Setup" menu by setting "SetSystemTime" to
1. Note that this works only if VDR is running under a user id that has
1. Note that this works only if VDR is running under a user ID that has
permisson to set the system time.
- The new item "Schedule" in the "Main" menu opens VDR's EPG (thanks to Robert
Schneider). See the MANUAL file for a detailed description.
......@@ -1721,3 +1721,49 @@ Video Disk Recorder Revision History
DVB_DRIVER_VERSION stuff has been replaced with DO_REC_AND_PLAY_ON_PRIMARY_DEVICE,
which can be used to disable simultaneous recording and replaying on the primary
DVB device in case there are problems with this.
2002-11-10: Version 1.1.16
- Fixed saving the polarization parameter of channels that have a number in the
'source' parameter (thanks to Peter Seyringer for reporting this one).
- Updated 'channels.conf.terr' (thanks to Andy Carter).
- Updated 'channels.conf.cable' (thanks to Achim Lange).
- First step towards a "unique channel ID". The channel ID is a human readable
string, made up from several parameters of the channel's definition in the file
'channels.conf' (see man vdr(5) for details).
In order for the "unique channel ID" to work, all channel definitions now must
be unique with respect to the combination of their Source, Frequency and SID
parameters. You may have to fix your 'channels.conf' manually if there are error
messages in the log file when loading it. BE SURE TO MAKE A BACKUP COPY OF YOUR
'channels.conf' AND 'timers.conf' FILE BEFORE SWITCHING TO THIS VERSION, AND CHECK
VERY CAREFULLY WHETHER YOUR TIMERS ARE STILL SET TO THE RIGHT CHANNELS!
When reading an existing 'timers.conf', the channels will be identified as before
by their numbers. As soon as this file is written back, the channel numbers will
be replaced by the channel IDs. After that it is possible to manually edit the
'channels.conf' file and rearrange the channels without breaking the timers.
Note that you can still define new timers manually by using the channel number.
VDR will correctly identify the 'channel' parameter in a timer definition and
use it as a channel number or a channel ID, respectively. Also, the SVDRP commands
that return timer definitions will list them with channel numbers in order to
stay compatible with existing applications.
The channel ID is also used in the 'epg.data' file to allow EPG information from
different sources to be stored, which would previously have been mixed up in case
they were using the same 'service ID'. Note that the contents of an existing
'epg.data' file from a previous version will be silently ignored, since it doesn't
contain the new channel IDs. When inserting EPG data into VDR via SVDRP you now also
need to use the channel IDs.
Currently the EPG data received from the DVB data stream only uses the 'Source'
and 'Service ID' part of the channel ID. This makes it work for channels with
the same service IDs on different sources (like satellites, cable or terrestrial).
However, it doesn't work yet if the service IDs are not unique within a specific
source. This will be fixed later.
- Added missing SID parameters to 'channels.conf'. Some channels have been removed
since they are apparently no longer broadcasted.
- Removed dropping EPG events from "other" streams that have a duration of 86400
seconds or more (was introduced in version 1.1.10). This has become obsolete by
the modification in version 1.1.13, which fixed fetching the current/next information
to handle cases where the duration of an event is set wrongly and would last beyond
the start time of the next event. Besides, the change in 1.1.10 broke handling EPG
data for NVOD channels.
- Fixed a compiler warning regarding cMenuChannels::Del() and MenuTimers::Del() hiding
the base class virtual functions.
......@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: channels.c 1.6 2002/11/01 10:26:45 kls Exp $
* $Id: channels.c 1.8 2002/11/10 13:01:55 kls Exp $
*/
#include "channels.h"
......@@ -126,19 +126,18 @@ char *cChannel::buffer = NULL;
cChannel::cChannel(void)
{
*name = 0;
frequency = 0;
source = 0;
srate = 0;
vpid = 0;
apid1 = 0;
strcpy(name, "Pro7");
frequency = 12480;
source = cSource::FromString("S19.2E");
srate = 27500;
vpid = 255;
apid1 = 256;
apid2 = 0;
dpid1 = 0;
dpid1 = 257;
dpid2 = 0;
tpid = 0;
tpid = 32;
ca = 0;
sid = 0;
number = 0;
groupSep = false;
polarization = 'v';
inversion = INVERSION_AUTO;
......@@ -151,30 +150,44 @@ cChannel::cChannel(void)
hierarchy = HIERARCHY_AUTO;
}
cChannel::cChannel(const cChannel *Channel)
cChannel& cChannel::operator= (const cChannel &Channel)
{
strcpy(name, Channel ? Channel->name : "Pro7");
frequency = Channel ? Channel->frequency : 12480;
source = Channel ? Channel->source : 0;
srate = Channel ? Channel->srate : 27500;
vpid = Channel ? Channel->vpid : 255;
apid1 = Channel ? Channel->apid1 : 256;
apid2 = Channel ? Channel->apid2 : 0;
dpid1 = Channel ? Channel->dpid1 : 257;
dpid2 = Channel ? Channel->dpid2 : 0;
tpid = Channel ? Channel->tpid : 32;
ca = Channel ? Channel->ca : 0;
sid = Channel ? Channel->sid : 0;
groupSep = Channel ? Channel->groupSep : false;
polarization = Channel ? Channel->polarization : 'v';
inversion = Channel ? Channel->inversion : INVERSION_AUTO;
bandwidth = Channel ? Channel->bandwidth : BANDWIDTH_AUTO;
coderateH = Channel ? Channel->coderateH : FEC_AUTO;
coderateL = Channel ? Channel->coderateL : FEC_AUTO;
modulation = Channel ? Channel->modulation : QAM_AUTO;
transmission = Channel ? Channel->transmission : TRANSMISSION_MODE_AUTO;
guard = Channel ? Channel->guard : GUARD_INTERVAL_AUTO;
hierarchy = Channel ? Channel->hierarchy : HIERARCHY_AUTO;
memcpy(&__BeginData__, &Channel.__BeginData__, (char *)&Channel.__EndData__ - (char *)&Channel.__BeginData__);
return *this;
}
static int MHz(int frequency)
{
while (frequency > 20000) {
frequency /= 1000;
}
return frequency;
}
uint64 cChannel::GetChannelID(void) const
{
return (uint64(source) << 48) | (uint64(0) << 32) | ((MHz(frequency)) << 16) | sid;
}
const char *cChannel::GetChannelIDStr(void) const
{
static char buffer[256];
snprintf(buffer, sizeof(buffer), "%s-%d-%d-%d", cSource::ToString(source), 0, MHz(frequency), sid);
return buffer;
}
uint64 cChannel::StringToChannelID(const char *s)
{
char *sourcebuf = NULL;
int reserved;
int frequency;
int sid;
if (4 == sscanf(s, "%a[^-]-%d-%d-%d", &sourcebuf, &reserved, &frequency, &sid)) {
int source = cSource::FromString(sourcebuf);
if (source >= 0)
return (uint64(source) << 48) | (uint64(reserved) << 32) | (frequency << 16) | sid;
}
return 0;
}
static int PrintParameter(char *p, char Name, int Value)
......@@ -185,6 +198,8 @@ static int PrintParameter(char *p, char Name, int Value)
const char *cChannel::ParametersToString(void)
{
char type = *cSource::ToString(source);
if (isdigit(type))
type = 'S';
#define ST(s) if (strchr(s, type))
static char buffer[64];
char *q = buffer;
......@@ -276,7 +291,7 @@ const char *cChannel::ToText(void)
return ToText(this);
}
bool cChannel::Parse(const char *s)
bool cChannel::Parse(const char *s, bool AllowNonUniqueID)
{
if (*s == ':') {
groupSep = true;
......@@ -322,6 +337,10 @@ bool cChannel::Parse(const char *s)
free(sourcebuf);
free(apidbuf);
free(namebuf);
if (!AllowNonUniqueID && Channels.GetByChannelID(GetChannelID())) {
esyslog("ERROR: channel data not unique!");
return false;
}
return ok;
}
else
......@@ -402,15 +421,34 @@ cChannel *cChannels::GetByNumber(int Number, int SkipGap)
return NULL;
}
cChannel *cChannels::GetByServiceID(unsigned short ServiceId)
cChannel *cChannels::GetByServiceID(int Source, unsigned short ServiceID)
{
for (cChannel *channel = First(); channel; channel = Next(channel)) {
if (!channel->GroupSep() && channel->Source() == Source && channel->Sid() == ServiceID)
return channel;
}
return NULL;
}
cChannel *cChannels::GetByChannelID(uint64 ChannelID)
{
for (cChannel *channel = First(); channel; channel = Next(channel)) {
if (!channel->GroupSep() && channel->Sid() == ServiceId)
if (!channel->GroupSep() && channel->GetChannelID() == ChannelID)
return channel;
}
return NULL;
}
bool cChannels::HasUniqueChannelID(cChannel *NewChannel, cChannel *OldChannel)
{
uint64 NewChannelID = NewChannel->GetChannelID();
for (cChannel *channel = First(); channel; channel = Next(channel)) {
if (!channel->GroupSep() && channel != OldChannel && channel->GetChannelID() == NewChannelID)
return false;
}
return true;
}
bool cChannels::SwitchTo(int Number)
{
cChannel *channel = GetByNumber(Number);
......
......@@ -17,7 +17,6 @@ KiKa:11954:h:S19.2E:27500:310:320:330:0:28008
arte:11836:h:S19.2E:27500:401:402:404:0:28109
ORF1:12692:h:S19.2E:22000:160:161:165:102:13001
ORF2:12692:h:S19.2E:22000:500:501:505:102:13002
ORF Sat:11954:h:S19.2E:27500:506:507:0:0:28010
ZDF.info:11954:h:S19.2E:27500:610:620:0:0:28011
CNN:12168:v:S19.2E:27500:165:100:0:0:28512
Super RTL:12188:h:S19.2E:27500:165:120:65:0:12040
......@@ -27,13 +26,13 @@ Kabel 1:12480:v:S19.2E:27500:511:512:33:0:899
Neun Live:12480:v:S19.2E:27500:767:768:35:0:897
DSF:12480:v:S19.2E:27500:1023:1024:0:0:900
HOT:12480:v:S19.2E:27500:1279:1280:0:0:40
Bloomberg TV Germany:12551:v:S19.2E:22000:162:99:0:0:12160
Bloomberg TV Germany:12552:v:S19.2E:22000:162:99:0:0:12160
Bloomberg TV France:11817:v:S19.2E:27500:163:92:0:0:8004
Bloomberg TV Spain:12168:v:S19.2E:27500:167:112:0:0:12721
Sky News:12552:v:S19.2E:22000:305:306:0:0:3995
Fox Kids Netherlands:12574:h:S19.2E:22000:163:92:0:0:5020
Alice:12610:v:S19.2E:22000:162:96:0:0:12200
n-tv:12669:v:S19.2E:22000:162:96:55:0:12730
n-tv:12670:v:S19.2E:22000:162:96:55:0:12730
Grand Tourisme:12670:v:S19.2E:22000:289:290:0:0:17300
TW1:12692:h:S19.2E:22000:166:167:0:0:13013
Eurosport:11954:h:S19.2E:27500:410:420:0:0:28009
......@@ -45,7 +44,6 @@ ZDF.doku:11954:h:S19.2E:27500:660:670:0:0:28014
MDR:12110:h:S19.2E:27500:401:402:404:0:28204
ORB:12110:h:S19.2E:27500:501:502:504:0:28205
B1:12110:h:S19.2E:27500:601:602:604:0:28206
ARD Online-Kanal:12722:h:S19.2E:22000:0:701:0:0:0
:Premiere World
Premiere Start:11797:h:S19.2E:27500:255:256:0:101:8
Premiere 1:11797:h:S19.2E:27500:511:512,513;515:0:101:10
......@@ -93,7 +91,7 @@ Premiere Sport 2:12031:h:S19.2E:27500:3839:3840:0:101:27
:#Boxengasse:12070:h:S19.2E:27500:767:768:0:101:213
:#Verfolgerfeld:12070:h:S19.2E:27500:1023:1024:0:101:214
:#Infokanal:12070:h:S19.2E:27500:1279:1280:0:101:215
Multikanal:11720:h:S19.2E:27500:255:256:0:101:17
:#Multikanal:11720:h:S19.2E:27500:255:256:0:101:17
:Beta Digital
N24:12480:v:S19.2E:27500:2047:2048:0:0:47
CNBC:11954:h:S19.2E:27500:510:520:0:0:28010
......@@ -110,77 +108,42 @@ BuLi 7:11719:h:S19.2E:27500:3327:3328,3329:0:101:245
BuLi 8:12031:h:S19.2E:27500:3071:3072,3073:0:101:208
BuLi 9:12031:h:S19.2E:27500:3327:3328,3329:0:101:209
:-
:#TV Niepokalanow:11876:h:S19.2E:27500:305:321:0:0:20601
Mosaico:11934:v:S19.2E:27500:165:100:0:0:29010
Andalucia TV:11934:v:S19.2E:27500:166:104:0:0:29011
TVC Internacional:11934:v:S19.2E:27500:167:108:0:0:0
Nasza TV:11992:h:S19.2E:27500:165:98:0:0:0
WishLine test:12012:v:S19.2E:27500:163:90:0:0:0
Canal J:11934:v:S19.2E:27500:167:108:0:0:8157
Extreme Sports Channel:11992:h:S19.2E:27500:165:98,99:0:0:20365
Pro 7 Austria:12051:v:S19.2E:27500:161:84:0:0:20002
Kabel 1 Schweiz:12051:v:S19.2E:27500:162:163:0:0:20003
Kabel 1 Austria:12051:v:S19.2E:27500:166:167:0:0:20004
Pro 7 Schweiz:12051:v:S19.2E:27500:289:290:0:0:20001
Kiosque:12129:v:S19.2E:27500:160:80:0:0:0
KTO:11739:v:S19.2E:27500:163:90:0:0:8304
TCM:12168:v:S19.2E:27500:160:80:0:0:0
Cartoon Network France & Spain:12168:v:S19.2E:27500:161:84:0:0:0
TVBS Europe:12168:v:S19.2E:27500:162:88:0:0:0
TVBS Europe:12168:v:S19.2E:27500:162:89:0:0:0
Travel:12168:v:S19.2E:27500:163:92:0:0:0
TCM Espania:12168:v:S19.2E:27500:164:96:0:0:0
MTV Spain:12168:v:S19.2E:27500:167:112:0:0:0
TCM France:12168:v:S19.2E:27500:169:64:0:0:0
RTL2 CH:12188:h:S19.2E:27500:164:112:0:0:0
Cartoon Network France:12168:v:S19.2E:27500:161:84:0:0:28511
TVBS Europe:12168:v:S19.2E:27500:162:88,89:0:0:28631
travel channel:12168:v:S19.2E:27500:163:92,93:0:0:28001
TCM Espana:12168:v:S19.2E:27500:164:96,97:0:0:28516
TCM France:12168:v:S19.2E:27500:169:64,65:0:0:28515
La Cinquieme:12207:v:S19.2E:27500:160:80:0:0:8501
LCP:12207:v:S19.2E:27500:165:100:0:0:8506
Post Filial TV:12226:h:S19.2E:27500:255:256:0:0:0
Canal Canaris:12246:v:S19.2E:27500:160:80:0:0:0
Canal Canaris:12246:v:S19.2E:27500:160:81:0:0:0
Canal Canaris:12246:v:S19.2E:27500:160:82:0:0:0
Canal Canaris:12246:v:S19.2E:27500:160:83:0:0:0
AB Moteurs:12266:h:S19.2E:27500:160:80:0:0:17000
AB Channel 1:12266:h:S19.2E:27500:161:84:0:0:0
Taquilla 0:12285:v:S19.2E:27500:165:100:0:0:0
CSAT:12324:v:S19.2E:27500:160:80:0:0:0
Mosaique:12324:v:S19.2E:27500:162:88:0:0:0
Mosaique 2:12324:v:S19.2E:27500:163:92:0:0:0
Mosaique 3:12324:v:S19.2E:27500:164:96:0:0:0
Le Sesame C+:12324:v:S19.2E:27500:165:1965:0:0:0
FEED:12344:h:S19.2E:27500:163:92:0:0:0
RTM 1:12363:v:S19.2E:27500:162:96:0:0:0
ESC 1:12363:v:S19.2E:27500:163:104:0:0:0
TV5 Europe:12363:v:S19.2E:27500:164:112:0:0:0
TV7 Tunisia:12363:v:S19.2E:27500:166:128:0:0:0
ARTE:12363:v:S19.2E:27500:167:137:0:0:0
AB 1:12266:h:S19.2E:27500:161:84:0:0:17001
Escales:12285:v:S19.2E:27500:165:100:0:0:17025
Canal Club:12324:v:S19.2E:27500:160:80:0:0:8612
RAI Uno:10788:v:S19.2E:22000:289:290:0:0:9004
RTP International:12363:v:S19.2E:27500:300:301:0:0:0
Fashion TV:12402:v:S19.2E:27500:163:92:0:0:0
VideoService:12422:h:S19.2E:27500:255:256:0:0:0
Beta Research promo:12422:h:S19.2E:27500:1023:1024:0:0:0
Canal Canarias:12441:v:S19.2E:27500:160:80:0:0:0
Fitur:12441:v:S19.2E:27500:514:662:0:0:0
Astra Info 1:12552:v:S19.2E:22000:164:112:0:0:0
Astra Info 2:12552:v:S19.2E:22000:165:120:0:0:0
Astra Vision 1:12552:v:S19.2E:22000:168:144:0:0:0
Astra Vision 1:12552:v:S19.2E:22000:168:145:0:0:0
Astra Vision 1:12552:v:S19.2E:22000:168:146:0:0:0
Astra Vision 1:12552:v:S19.2E:22000:168:147:0:0:0
Astra Vision 1:12552:v:S19.2E:22000:168:148:0:0:0
Astra Vision 1:12552:v:S19.2E:22000:168:149:0:0:0
Astra Vision 1:12552:v:S19.2E:22000:168:150:0:0:0
K13:12402:v:S19.2E:27500:163:92:0:0:8704
Astra Mosaic 1:12552:v:S19.2E:22000:175:176:0:0:3988
Astra Mosaic 2:12552:v:S19.2E:22000:179:120:0:0:3987
Astra Mosaic 3:12552:v:S19.2E:22000:182:169:0:0:3986
Astra Mosaic 4:12552:v:S19.2E:22000:185:170:0:0:3985
Astra Mosaic 5:12552:v:S19.2E:22000:163:170:0:0:3984
Chamber TV:12552:v:S19.2E:22000:55:56:0:0:12180
RTL Tele Letzebuerg:12552:v:S19.2E:22000:168:144,146:0:0:3994
Astra Mosaic:12552:v:S19.2E:22000:175:176:0:0:0
MHP test:12604:h:S19.2E:22000:5632:0:0:0:0
VERONICA:12574:h:S19.2E:22000:161:84:0:0:5010
VH1 Classic:12699:v:S19.2E:22000:3071:3072:0:0:28647
MTV 2 Pop:12699:v:S19.2E:22000:3081:3082:0:0:28648
VH1 Classic:12670:v:S19.2E:22000:3071:3072:0:0:28647
MTV 2 Pop:12670:v:S19.2E:22000:3081:3082:0:0:28648
Via 1 - Schner Reisen:12148:h:S19.2E:27500:511:512:0:0:44
Video Italia:12610:v:S19.2E:22000:121:122:0:0:12220
AC 3 promo:12670:v:S19.2E:22000:308:256:0:0:0
ORF/ZDF:12699:h:S19.2E:22000:506:507:0:0:13012
ORF/ZDF:12670:h:S19.2E:22000:506:507:0:0:13012
VIVA:12670:v:S19.2E:22000:309:310:0:0:12732
VIVA2:12552:v:S19.2E:22000:171:172:0:0:12120
MTV German:12699:v:S19.2E:22000:3031:3032:0:0:28643
:#IFA-TV:10832:h:S19.2E:22000:132:133:32:0:7251
VIVA PLUS:12552:v:S19.2E:22000:171:172:0:0:12120
MTV German:12670:v:S19.2E:22000:3031:3032:0:0:28643
QVC Germany:12552:v:S19.2E:22000:165:166:0:0:12100
:#TANGOTV:10832:h:S19.2E:22000:61:62:0:0:61920
......@@ -190,7 +190,7 @@ JAZZ:378:M64:C:6900:1:640:0:101:148
KLASSIK POPULR:378:M64:C:6900:1:624:0:101:147
ORCHESTRALE WERKE:378:M64:C:6900:1:560:0:101:158
CLASSIC ROCK:370:M64:C:6900:1:352:0:101:163
VOLKSMUSIK:370:M64:C:6900:1:400:0:101:157
CHILLOUT:370:M64:C:6900:1:400:0:101:157
SCHLAGER:370:M64:C:6900:1:384:0:101:162
GOLD:370:M64:C:6900:1:320:0:101:166
OLD GOLD:362:M64:C:6900:1:336:0:101:167
......
: UK channels
BBC ONE:505833:0:0:0:600:601:0:0:4164
BBC TWO:505833:0:0:0:610:611:0:0:4228
ITV 1:481833:0:0:0:512:650:0:0:8261
Channel 4:481833:0:0:0:2827:2828:0:0:8384
Channel 5:561833:0:0:0:6017:6018:0:0:12866
ITV 2:481833:0:0:0:2818:2819:0:0:8325
BBC CHOICE:505833:0:0:0:620:621:0:0:4351
BBC NEWS 24:505833:0:0:0:640:641:0:0:4415
BBC Knowledge:505833:0:0:0:630:631:0:0:4607
Shop!:561833:0:0:0:6049:6050:0:0:13120
: UK channels for Crystal Palace, London
BBC ONE (TV):505833:I0C34D0M16B8T2G32Y0:T:27500:600:601,602:602:0:4164
BBC TWO (TV):505833:I0C34D0M16B8T2G32Y0:T:27500:610:611,612:0:2:4228
BBC THREE (TV):505833:I0C34D0M16B8T2G32Y0:T:27500:620:621,622:0:0:4351
BBC NEWS 24 (TV):505833:I0C34D0M16B8T2G32Y0:T:27500:640:641:0:0:4415
Ch 14 (TV):481833:I0C23D0M64B8T2G32Y0:T:27500:2840:2841,2843:0:0:8800
ITV 2 (TV):481833:I0C23D0M64B8T2G32Y0:T:27500:2818:2819,2821:0:0:8325
ITV 1 (TV):481833:I0C23D0M64B8T2G32Y0:T:27500:512:650,660:0:0:8261
Channel 4 (TV):481833:I0C23D0M64B8T2G32Y0:T:27500:2827:2828,2830:0:0:8384
five (TV):561833:I0C23D0M64B8T2G32Y0:T:27500:6017:6018,6019:0:0:12866
QVC (TV):561833:I0C23D0M64B8T2G32Y0:T:27500:6049:6050:0:0:13120
TV Travel Shop (TV):561833:I0C23D0M64B8T2G32Y0:T:27500:6161:6162:0:0:13632
ITV News (TV):561833:I0C23D0M64B8T2G32Y0:T:27500:6193:6194:0:0:13760
BBC PARLMNT (RADIO):529833:I0C34D0M16B8T2G32Y0:T:27500:0:403:0:0:16768
BBC FOUR (TV):529833:I0C34D0M16B8T2G32Y0:T:27500:201:401,402:0:0:16832
BBC R5 Live (RADIO):529833:I0C34D0M16B8T2G32Y0:T:27500:0:430:0:0:17920
BBC 5L SportsX (RADIO):529833:I0C34D0M16B8T2G32Y0:T:27500:0:431:0:0:17984
BBC 6 Music (RADIO):529833:I0C34D0M16B8T2G32Y0:T:27500:0:432:0:0:18048
BBC 7 (RADIO):529833:I0C34D0M16B8T2G32Y0:T:27500:0:433:0:0:18112
1Xtra BBC (RADIO):529833:I0C34D0M16B8T2G32Y0:T:27500:0:434:0:0:18176
BBC Asian Net. (RADIO):529833:I0C34D0M16B8T2G32Y0:T:27500:0:435:0:0:18240
701 (TV):529833:I0C34D0M16B8T2G32Y0:T:27500:203:407:0:0:19456
702 (TV):529833:I0C34D0M16B8T2G32Y0:T:27500:204:411:0:0:19520
Sky News (TV):578166:I0C34D0M16B8T2G32Y0:T:27500:101:102,104:0:0:22080
Sky Spts News (TV):578166:I0C34D0M16B8T2G32Y0:T:27500:201:202,204:0:0:22144
Sky Travel (TV):578166:I0C34D0M16B8T2G32Y0:T:27500:301:302,304:0:0:22208
UKHistory (TV):578166:I0C34D0M16B8T2G32Y0:T:27500:401:402,404:0:0:22272
THE HITS (TV):537833:I0C34D0M16B8T2G32Y0:T:27500:101:102:0:0:25664
TMF (TV):537833:I0C34D0M16B8T2G32Y0:T:27500:201:202,204:0:0:25728
UKHomeStyle (TV):537833:I0C34D0M16B8T2G32Y0:T:27500:301:302,306:0:0:25792
f tn (TV):537833:I0C34D0M16B8T2G32Y0:T:27500:301:302,304:0:0:25856
Ch 44 (TV):537833:I0C34D0M16B8T2G32Y0:T:27500:501:502,504:0:0:26048
Smash Hits! (RADIO):537833:I0C34D0M16B8T2G32Y0:T:27500:0:1201:0:0:26240
KISS (RADIO):537833:I0C34D0M16B8T2G32Y0:T:27500:0:1101:0:0:26176
Kerrang! (RADIO):537833:I0C34D0M16B8T2G32Y0:T:27500:0:1301:0:0:26304
jazz fm (RADIO):537833:I0C34D0M16B8T2G32Y0:T:27500:0:1401:0:0:26368
oneword (RADIO):537833:I0C34D0M16B8T2G32Y0:T:27500:0:1501:0:0:26432
BBC World Sv (RADIO):537833:I0C34D0M16B8T2G32Y0:T:27500:0:1601:0:0:26496
Ch 22 (TV):537833:I0C34D0M16B8T2G32Y0:T:27500:501:502,504:0:0:26048
Ch 32 (TV):537833:I0C34D0M16B8T2G32Y0:T:27500:501:502,504:0:0:25984
: DVB-T Berlin Germany
PRO 7:658000:I0C23D0M16B8T8G8Y0:T:27500:305:306;307:0:0:16403
SAT 1:658000:I0C23D0M16B8T8G8Y0:T:27500:385:386:0:0:16408
......
......@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: channels.h 1.3 2002/10/20 11:50:36 kls Exp $
* $Id: channels.h 1.4 2002/11/10 13:01:23 kls Exp $
*/
#ifndef __CHANNELS_H
......@@ -41,6 +41,7 @@ private:
static char *buffer;
static const char *ToText(cChannel *Channel);
enum { MaxChannelName = 32 }; // 31 chars + terminating 0!
int __BeginData__;
char name[MaxChannelName];
int frequency; // MHz
int source;
......@@ -53,7 +54,6 @@ private:
int sid;
int number; // Sequence number assigned on load
bool groupSep;
//XXX
char polarization;
int inversion;
int bandwidth;
......@@ -63,13 +63,14 @@ private:
int transmission;
int guard;
int hierarchy;
int __EndData__;
const char *ParametersToString(void);
bool StringToParameters(const char *s);
public:
cChannel(void);
cChannel(const cChannel *Channel);
cChannel& operator= (const cChannel &Channel);
const char *ToText(void);
bool Parse(const char *s);
bool Parse(const char *s, bool AllowNonUniqueID = false);
bool Save(FILE *f);
const char *Name(void) const { return name; }
int Frequency(void) const { return frequency; }
......@@ -86,7 +87,6 @@ public:
int Number(void) const { return number; }
void SetNumber(int Number) { number = Number; }
bool GroupSep(void) const { return groupSep; }
//XXX
char Polarization(void) const { return polarization; }
int Inversion(void) const { return inversion; }
int Bandwidth(void) const { return bandwidth; }
......@@ -96,10 +96,12 @@ public:
int Transmission(void) const { return transmission; }
int Guard(void) const { return guard; }
int Hierarchy(void) const { return hierarchy; }
//XXX
bool IsCable(void) { return (source & cSource::st_Mask) == cSource::stCable; }
bool IsSat(void) { return (source & cSource::st_Mask) == cSource::stSat; }
bool IsTerr(void) { return (source & cSource::st_Mask) == cSource::stTerr; }
uint64 GetChannelID(void) const;
const char *GetChannelIDStr(void) const;
static uint64 StringToChannelID(const char *s);
};
class cChannels : public cConfig<cChannel> {
......@@ -113,7 +115,9 @@ public:
int GetNextNormal(int Idx); // Get next normal channel (not group)
void ReNumber(void); // Recalculate 'number' based on channel type
cChannel *GetByNumber(int Number, int SkipGap = 0);
cChannel *GetByServiceID(unsigned short ServiceId);
cChannel *GetByServiceID(int Source, unsigned short ServiceID);
cChannel *GetByChannelID(uint64 ChannelID);
bool HasUniqueChannelID(cChannel *NewChannel, cChannel *OldChannel = NULL);
bool SwitchTo(int Number);
int MaxNumber(void) { return maxNumber; }
};
......
......@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: config.h 1.138 2002/11/01 09:27:17 kls Exp $
* $Id: config.h 1.139 2002/11/08 13:16:12 kls Exp $
*/
#ifndef __CONFIG_H
......@@ -20,7 +20,7 @@
#include "eit.h"
#include "tools.h"
#define VDRVERSION "1.1.15"
#define VDRVERSION "1.1.16"
#define MAXPRIORITY 99
#define MAXLIFETIME 99
......
......@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: device.c 1.34 2002/11/03 11:51:24 kls Exp $
* $Id: device.c 1.35 2002/11/10 10:17:57 kls Exp $
*/
#include "device.h"
......@@ -379,7 +379,7 @@ eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView)
if (Result == scrOk) {
if (LiveView && IsPrimaryDevice()) {
cSIProcessor::SetCurrentServiceID(Channel->Sid());
cSIProcessor::SetCurrentChannelID(Channel->GetChannelID());
currentChannel = Channel->Number();
}
cStatus::MsgChannelSwitch(this, Channel->Number()); // only report status if channel switch successfull
......
......@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: dvbdevice.c 1.34 2002/11/03 12:31:11 kls Exp $
* $Id: dvbdevice.c 1.35 2002/11/10 12:57:17 kls Exp $
*/
#include "dvbdevice.h"
......@@ -412,7 +412,7 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
// Stop setting system time:
if (siProcessor)
siProcessor->SetCurrentTransponder(0);
siProcessor->SetCurrentTransponder(0, 0);
// Turn off live PIDs if necessary:
......@@ -585,7 +585,7 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
// Start setting system time:
if (siProcessor)
siProcessor->SetCurrentTransponder(Channel->Frequency());
siProcessor->SetCurrentTransponder(Channel->Source(), Channel->Frequency());
return true;
}
......
This diff is collapsed.
......@@ -16,7 +16,7 @@
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* $Id: eit.h 1.20 2002/11/02 12:36:36 kls Exp $
* $Id: eit.h 1.21 2002/11/10 12:58:27 kls Exp $
***************************************************************************/
#ifndef __EIT_H
......@@ -32,7 +32,7 @@ class cEventInfo : public cListObject {
friend class cEIT;
private:
unsigned char uTableID; // Table ID this event came from
unsigned short uServiceID; // Service ID of program for that event
uint64 uChannelID; // Channel ID of program for that event
bool bIsFollowing; // true if this is the next event on this channel
bool bIsPresent; // true if this is the present event running
char *pExtendedDescription; // Extended description of this event
......@@ -47,13 +47,13 @@ protected:
void SetFollowing(bool foll);
void SetPresent(bool pres);
void SetTitle(const char *string);
void SetServiceID(unsigned short servid);
void SetChannelID(uint64 channelid);
void SetEventID(unsigned short evid);
void SetDuration(long l);
void SetTime(time_t t);
void SetExtendedDescription(const char *string);
void SetSubtitle(const char *string);
cEventInfo(unsigned short serviceid, unsigned short eventid);
cEventInfo(uint64 channelid, unsigned short eventid);
public:
~cEventInfo();
const unsigned char GetTableID(void) const;
......@@ -68,7 +68,7 @@ public:
unsigned short GetEventID(void) const;
long GetDuration(void) const;
time_t GetTime(void) const;
unsigned short GetServiceID(void) const;
uint64 GetChannelID(void) const;
int GetChannelNumber(void) const { return nChannelNumber; }
void SetChannelNumber(int ChannelNumber) const { ((cEventInfo *)this)->nChannelNumber = ChannelNumber; } // doesn't modify the EIT data, so it's ok to make it 'const'
void Dump(FILE *f, const char *Prefix = "") const;
......@@ -82,21 +82,21 @@ class cSchedule : public cListObject {
private:
cEventInfo *pPresent;
cEventInfo *pFollowing;
unsigned short uServiceID;
uint64 uChannelID;
cList<cEventInfo> Events;
protected:
void SetServiceID(unsigned short servid);
void SetChannelID(uint64 channelid);
bool SetFollowingEvent(cEventInfo *pEvent);
bool SetPresentEvent(cEventInfo *pEvent);
void Cleanup(time_t tTime);
void Cleanup(void);
cSchedule(unsigned short servid = 0);
cSchedule(uint64 channelid = 0);
public:
~cSchedule();
cEventInfo *AddEvent(cEventInfo *EventInfo);
const cEventInfo *GetPresentEvent(void) const;
const cEventInfo *GetFollowingEvent(void) const;
unsigned short GetServiceID(void) const;
uint64 GetChannelID(void) const;
const cEventInfo *GetEvent(unsigned short uEventID, time_t tTime = 0) const;
const cEventInfo *GetEventAround(time_t tTime) const;
const cEventInfo *GetEventNumber(int n) const { return Events.Get(n); }
......@@ -110,15 +110,15 @@ class cSchedules : public cList<cSchedule> {
friend class cSIProcessor;
private:
const cSchedule *pCurrentSchedule;
unsigned short uCurrentServiceID;
uint64 uCurrentChannelID;
protected:
const cSchedule *AddServiceID(unsigned short servid);
const cSchedule *SetCurrentServiceID(unsigned short servid);
const cSchedule *AddChannelID(uint64 channelid);
const cSchedule *SetCurrentChannelID(uint64 channelid);
void Cleanup();
public:
cSchedules(void);
~cSchedules();
const cSchedule *GetSchedule(unsigned short servid) const;
const cSchedule *GetSchedule(uint64 channelid) const;
const cSchedule *GetSchedule(void) const;
void Dump(FILE *f, const char *Prefix = "") const;
static bool Read(FILE *f);
......@@ -141,6 +141,7 @@ private:
static const char *epgDataFileName;
static time_t lastDump;
bool masterSIProcessor;
int currentSource;
int currentTransponder;
SIP_FILTER *filters;
char *fileName;
......@@ -160,8 +161,8 @@ public:
static bool Read(FILE *f = NULL);
static void Clear(void);
void SetStatus(bool On);
void SetCurrentTransponder(int CurrentTransponder);
static bool SetCurrentServiceID(unsigned short servid);
void SetCurrentTransponder(int CurrentSource, int CurrentTransponder);
static bool SetCurrentChannelID(uint64 channelid);
static void TriggerDump(void);
};
......
......@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: i18n.c 1.99 2002/10/27 14:24:00 kls Exp $
* $Id: i18n.c 1.100 2002/11/10 12:32:30 kls Exp $
*
* Translations provided by:
*
......@@ -1468,6 +1468,22 @@ const tI18nPhrase Phrases[] = {
"",//TODO
"",//TODO
},
{ "Channel settings are not unique!",
"Kanaleinstellungen sind nicht eindeutig!",
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
"",//TODO
},