diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2002-11-24 18:00:00 +0100 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2002-11-24 18:00:00 +0100 |
commit | fe9499ba901f5c32dd0b3841a2b6e599fefc144f (patch) | |
tree | 3a9efdef4b928aeffea51fc36a011ef367c14b21 /channels.h | |
parent | 8b5d4040832f9a11119002fef5144a7d6705f19c (diff) | |
download | vdr-patch-lnbsharing-fe9499ba901f5c32dd0b3841a2b6e599fefc144f.tar.gz vdr-patch-lnbsharing-fe9499ba901f5c32dd0b3841a2b6e599fefc144f.tar.bz2 |
Version 1.1.17vdr-1.1.17
- Added new entries to 'ca.conf'.
- Fixed closing unused PID handles (thanks to Stefan Schluenss for reporting this
one).
- Added more examples to 'diseqc.conf' (thanks to Oliver Endriss).
- Fixed disabling multiple recordings on a single DVB card (comment out the definition
of the macros DO_REC_AND_PLAY_ON_PRIMARY_DEVICE and DO_MULTIPLE_RECORDINGS in
dvbdevice.c).
- Plugins can now have their very own OSD setup in the object they return from
a call to cPlugin::MainMenuAction(). In order to implement this, the return type
of cPlugin::MainMenuAction() had to be changed from (cOsdMenu *) to (cOsdObject *).
So in case you are compiling an existing plugin with this version of VDR and you
get an error message, simply change cOsdMenu to cOsdObject in the plugin's source
for the MainMenuAction() function.
Plugin authors who have so far (ab)used the cControl mechanism to implement their
own raw OSD should take a look at the new demo plugin 'osddemo'. It implements
a very primitive game that shows how a plugin can have its own raw OSD. Especially
look into cLineGame and see how it implements the Show() function. See also
the chapter on "User interaction" in PLUGINS.html.
- Added three new fields to the lines in 'channels.conf': NID, TID and RID. NID and
TID are the Network and Transport Stream IDs, respectively. RID is an additional ID
that can be used to tell apart channels that would otherwise be indistinguishable.
This is typically the case with radio channels, which may have the same NID, TID
and SID, but different "radio IDs". This new field is therefore called RID ("radio
ID"). Currently NID and TID are not yet used by VDR and should always be 0. The
RID is actually used when building the "unique channel ID", so if you have channels
in your 'channels.conf' file that cause error messages when loading, you can set
the RIDs of these channels to different values.
When reading an old 'channels.conf' these new fields will be automatically
initialized to 0 and once the file is written back to disk they will be appended
to the channel definitions.
Thanks to Régis Bossut for pointing out that with some providers the channels can
only be distinguished through the RID.
- The "unique channel ID" now contains an optional 5th part (the RID). See man vdr(5).
- Updated 'channels.conf.cable' and made some channels unique using the new RID
(thanks to Andreas Kool for pointing out the problems).
- Made some channels unique in 'channels.conf.terr' using the new RID.
- Extended the '-l' option to allow logging to LOG_LOCALn (n=0..7) by writing, for
instance, '-l 3.7' (suggested by Jürgen Schmidt).
- Now deleting stale lock files if they have a time stamp that is outside the window
'now +/- LOCKFILESTALETIME'. This improves things in cases where the system time
makes far jumps, so that a lock file might end up with a time stamp that lies
in the distant future (thanks to Oliver Endriss).
Diffstat (limited to 'channels.h')
-rw-r--r-- | channels.h | 29 |
1 files changed, 24 insertions, 5 deletions
@@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: channels.h 1.4 2002/11/10 13:01:23 kls Exp $ + * $Id: channels.h 1.5 2002/11/24 14:27:51 kls Exp $ */ #ifndef __CHANNELS_H @@ -35,6 +35,24 @@ extern const tChannelParameterMap TransmissionValues[]; extern const tChannelParameterMap GuardValues[]; extern const tChannelParameterMap HierarchyValues[]; +struct tChannelID { +private: + int source; + int nid; + int tid; + int sid; + int rid; +public: + tChannelID(void) { source = nid = tid = sid = rid = 0; } + tChannelID(int Source, int Nid, int Tid, int Sid, int Rid = 0) { source = Source; nid = Nid; tid = Tid; sid = Sid; rid = Rid; } + bool operator== (const tChannelID &arg) const; + bool Valid(void) { return source && tid && sid; } // nid and rid are optional + tChannelID &ClrRid(void) { rid = 0; return *this; } + static tChannelID FromString(const char *s); + const char *ToString(void); + static const tChannelID InvalidID; + }; + class cChannel : public cListObject { friend class cMenuEditChannel; private: @@ -51,7 +69,10 @@ private: int dpid1, dpid2; int tpid; int ca; + int nid; + int tid; int sid; + int rid; int number; // Sequence number assigned on load bool groupSep; char polarization; @@ -99,9 +120,7 @@ public: 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); + tChannelID GetChannelID(void) const; }; class cChannels : public cConfig<cChannel> { @@ -116,7 +135,7 @@ public: void ReNumber(void); // Recalculate 'number' based on channel type cChannel *GetByNumber(int Number, int SkipGap = 0); cChannel *GetByServiceID(int Source, unsigned short ServiceID); - cChannel *GetByChannelID(uint64 ChannelID); + cChannel *GetByChannelID(tChannelID ChannelID, bool TryWithoutRid = false); bool HasUniqueChannelID(cChannel *NewChannel, cChannel *OldChannel = NULL); bool SwitchTo(int Number); int MaxNumber(void) { return maxNumber; } |