summaryrefslogtreecommitdiff
path: root/channels.h
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2002-10-06 10:25:42 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2002-10-06 10:25:42 +0200
commit962596f4abc3790ac0f3f317079a3362210fff8f (patch)
treeb9428aea092f90731b389604fcc8540070dbf556 /channels.h
parentb7615a7ae144789da14d32019b2f86fc4bf6dcef (diff)
downloadvdr-962596f4abc3790ac0f3f317079a3362210fff8f.tar.gz
vdr-962596f4abc3790ac0f3f317079a3362210fff8f.tar.bz2
Modified channel handling; full DiSEqC support
Diffstat (limited to 'channels.h')
-rw-r--r--channels.h124
1 files changed, 124 insertions, 0 deletions
diff --git a/channels.h b/channels.h
new file mode 100644
index 00000000..8a784f75
--- /dev/null
+++ b/channels.h
@@ -0,0 +1,124 @@
+/*
+ * channels.h: Channel handling
+ *
+ * See the main source file 'vdr.c' for copyright information and
+ * how to reach the author.
+ *
+ * $Id: channels.h 1.1 2002/10/05 13:53:15 kls Exp $
+ */
+
+#ifndef __CHANNELS_H
+#define __CHANNELS_H
+
+#include "config.h"
+#include "sources.h"
+#include "tools.h"
+
+#define ISTRANSPONDER(f1, f2) (abs((f1) - (f2)) < 4) //XXX
+
+struct tChannelParameterMap {
+ int userValue;
+ int driverValue;
+ };
+
+//XXX into cChannel???
+int MapToUser(int Value, const tChannelParameterMap *Map);
+int MapToDriver(int Value, const tChannelParameterMap *Map);
+int UserIndex(int Value, const tChannelParameterMap *Map);
+int DriverIndex(int Value, const tChannelParameterMap *Map);
+
+extern const tChannelParameterMap InversionValues[];
+extern const tChannelParameterMap BandwidthValues[];
+extern const tChannelParameterMap CoderateValues[];
+extern const tChannelParameterMap ModulationValues[];
+extern const tChannelParameterMap TransmissionValues[];
+extern const tChannelParameterMap GuardValues[];
+extern const tChannelParameterMap HierarchyValues[];
+
+class cChannel : public cListObject {
+ friend class cMenuEditChannel;
+private:
+ static char *buffer;
+ static const char *ToText(cChannel *Channel);
+ enum { MaxChannelName = 32 }; // 31 chars + terminating 0!
+ char name[MaxChannelName];
+ int frequency; // MHz
+ int source;
+ int srate;
+ int vpid;
+ int apid1, apid2;
+ int dpid1, dpid2;
+ int tpid;
+ int ca;
+ int sid;
+ int number; // Sequence number assigned on load
+ bool groupSep;
+ //XXX
+ char polarization;
+ int inversion;
+ int bandwidth;
+ int coderateH;
+ int coderateL;
+ int modulation;
+ int transmission;
+ int guard;
+ int hierarchy;
+ const char *ParametersToString(void);
+ bool StringToParameters(const char *s);
+public:
+ cChannel(void);
+ cChannel(const cChannel *Channel);
+ const char *ToText(void);
+ bool Parse(const char *s);
+ bool Save(FILE *f);
+ const char *Name(void) const { return name; }
+ int Frequency(void) const { return frequency; }
+ int Source(void) const { return source; }
+ int Srate(void) const { return srate; }
+ int Vpid(void) const { return vpid; }
+ int Apid1(void) const { return apid1; }
+ int Apid2(void) const { return apid2; }
+ int Dpid1(void) const { return dpid1; }
+ int Dpid2(void) const { return dpid2; }
+ int Tpid(void) const { return tpid; }
+ int Ca(void) const { return ca; }
+ int Sid(void) const { return sid; }
+ 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; }
+ int CoderateH(void) const { return coderateH; }
+ int CoderateL(void) const { return coderateL; }
+ int Modulation(void) const { return modulation; }
+ 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; }
+ };
+
+class cChannels : public cConfig<cChannel> {
+protected:
+ int maxNumber;
+public:
+ cChannels(void) { maxNumber = 0; }
+ virtual bool Load(const char *FileName, bool AllowComments = false);
+ int GetNextGroup(int Idx); // Get next channel group
+ int GetPrevGroup(int Idx); // Get previous channel group
+ int GetNextNormal(int Idx); // Get next normal channel (not group)
+ void ReNumber(void); // Recalculate 'number' based on channel type
+ cChannel *GetByNumber(int Number);
+ cChannel *GetByServiceID(unsigned short ServiceId);
+ const char *GetChannelNameByNumber(int Number);
+ bool SwitchTo(int Number);
+ int MaxNumber(void) { return maxNumber; }
+ };
+
+extern cChannels Channels;
+
+#endif //__CHANNELS_H