MythTV master
channelbase.h
Go to the documentation of this file.
1// -*- Mode: c++ -*-
2
3#ifndef CHANNELBASE_H
4#define CHANNELBASE_H
5
6// Qt headers
7#include <QWaitCondition>
8#include <QStringList>
9#include <QMutex>
10
11// MythTV headers
13#include "channelinfo.h"
14#include "tv.h"
15#include "videoouttypes.h" // for PictureAttribute
16
19class DVBDBOptions;
20class ChannelBase;
21class TVRec;
22
32{
33 friend class SignalMonitor;
34
35 public:
36 explicit ChannelBase(TVRec *parent);
37 virtual ~ChannelBase(void);
38
39 virtual bool Init(QString &startchannel, bool setchan);
40 virtual bool IsTunable(const QString &channum) const;
41
42 // Methods that must be implemented.
44 virtual bool Open(void) = 0;
46 virtual void Close(void) = 0;
48 virtual bool IsOpen(void) const = 0;
49 virtual bool SetChannelByString(const QString &chan) = 0;
50
51 // Methods that one might want to specialize
52 virtual void SetFormat(const QString &/*format*/) {}
53 virtual int SetFreqTable(const QString &/*tablename*/) { return 0; }
55 virtual void SetFd(int fd) { (void)fd; };
57 virtual int GetFd(void) const { return -1; };
58 virtual bool Tune(const QString &/*freqid*/, int /*finetune*/) { return true; }
59 virtual bool IsExternalChannelChangeInUse(void);
60
61 // Gets
62 virtual uint GetNextChannel(uint chanid, ChannelChangeDirection direction) const;
63 virtual uint GetNextChannel(const QString &channum, ChannelChangeDirection direction) const;
64 virtual QString GetChannelName(void) const
65 { return m_curChannelName; }
66 virtual int GetChanID(void) const;
67 virtual int GetInputID(void) const
68 { return m_inputId; }
69 virtual QString GetInputName(void) const
70 { return m_name; }
71 virtual uint GetSourceID(void) const
72 { return m_sourceId; }
73
75 // on current channel, for BBC, CBC, etc.
76 bool IsCommercialFree(void) const { return m_commFree; }
78 virtual QString GetDevice(void) const { return ""; }
79
80 // Sets
81 virtual void Renumber(uint sourceid, const QString &oldChanNum,
82 const QString &newChanNum);
83
84 virtual bool InitializeInput(void);
85
86 // Misc. Commands
87 virtual bool Retune(void) { return false; }
88
90 virtual void StoreInputChannels(void);
91
92 // Picture attribute settings
93 virtual bool InitPictureAttributes(void) { return false; }
94 virtual int GetPictureAttribute(PictureAttribute /*attr*/) const { return -1; }
96 PictureAdjustType /*type*/, PictureAttribute /*attr*/, bool /*direction*/) { return -1; }
97
98 bool CheckChannel(const QString &channum) const;
99
100 // \brief Set inputid for scanning
101 void SetInputID(uint _inputid) { m_inputId = _inputid; }
102
103 // \brief Get major input ID
104 int GetMajorID(void);
105
107 TVRec *tvrec,
108 const GeneralDBOptions &genOpt,
109 const DVBDBOptions &dvbOpt,
110 const FireWireDBOptions &fwOpt,
111 const QString &startchannel,
112 bool enter_power_save_mode,
113 QString &rbFileExt,
114 bool setchan);
115
116 protected:
119 virtual bool IsInputAvailable(uint &mplexid_restriction,
120 uint &chanid_restriction) const;
121 virtual bool IsExternalChannelChangeSupported(void) { return false; }
122
123 protected:
124 bool KillScript(void);
125 void HandleScript(const QString &freqid);
126 virtual void HandleScriptEnd(bool ok);
127 uint GetScriptStatus(bool holding_lock = false);
128
129 bool ChangeExternalChannel(const QString &changer,
130 const QString &freqid);
131 bool ChangeInternalChannel(const QString &freqid,
132 uint cardinputid) const;
133
134 TVRec *m_pParent {nullptr};
136 bool m_commFree {false};
139 QString m_name;
144
151};
152
153
154#endif
std::vector< ChannelInfo > ChannelInfoList
Definition: channelinfo.h:131
Abstract class providing a generic interface to tuning hardware.
Definition: channelbase.h:32
QString m_name
Definition: channelbase.h:139
virtual QString GetInputName(void) const
Definition: channelbase.h:69
void HandleScript(const QString &freqid)
virtual int ChangePictureAttribute(PictureAdjustType, PictureAttribute, bool)
Definition: channelbase.h:95
virtual uint GetSourceID(void) const
Definition: channelbase.h:71
ChannelBase(TVRec *parent)
Definition: channelbase.cpp:52
bool ChangeInternalChannel(const QString &freqid, uint cardinputid) const
bool ChangeExternalChannel(const QString &changer, const QString &freqid)
virtual bool Open(void)=0
Opens the channel changing hardware for use.
bool IsCommercialFree(void) const
Returns true iff commercial detection is not required.
Definition: channelbase.h:76
virtual uint GetNextChannel(uint chanid, ChannelChangeDirection direction) const
virtual bool IsInputAvailable(uint &mplexid_restriction, uint &chanid_restriction) const
Switches to another input on hardware, and sets the channel is setstarting is true.
virtual void HandleScriptEnd(bool ok)
virtual bool IsTunable(const QString &channum) const
virtual void StoreInputChannels(void)
Saves current channel as the default channel for the current input.
virtual void Close(void)=0
Closes the channel changing hardware to use.
virtual bool IsOpen(void) const =0
Reports whether channel is already open.
virtual QString GetChannelName(void) const
Definition: channelbase.h:64
virtual bool Tune(const QString &, int)
Definition: channelbase.h:58
virtual ~ChannelBase(void)
Definition: channelbase.cpp:60
void SetInputID(uint _inputid)
Definition: channelbase.h:101
QMutex m_systemLock
Definition: channelbase.h:145
bool m_commFree
Definition: channelbase.h:136
ChannelInfoList m_channels
channels across all inputs
Definition: channelbase.h:143
virtual void SetFormat(const QString &)
Definition: channelbase.h:52
virtual void Renumber(uint sourceid, const QString &oldChanNum, const QString &newChanNum)
Changes a channum if we have it cached anywhere.
virtual bool IsExternalChannelChangeInUse(void)
bool CheckChannel(const QString &channum) const
virtual int GetPictureAttribute(PictureAttribute) const
Definition: channelbase.h:94
uint m_systemStatus
These get mapped from the GENERIC_EXIT_* to these values for use with the signalmonitor code.
Definition: channelbase.h:150
virtual int GetChanID(void) const
virtual void SetFd(int fd)
Sets file descriptor.
Definition: channelbase.h:55
virtual bool IsExternalChannelChangeSupported(void)
Definition: channelbase.h:121
virtual bool Init(QString &startchannel, bool setchan)
Definition: channelbase.cpp:67
uint m_sourceId
Definition: channelbase.h:138
QString m_curChannelName
Definition: channelbase.h:135
virtual int GetFd(void) const
Returns file descriptor, -1 if it does not exist.
Definition: channelbase.h:57
TVRec * m_pParent
Definition: channelbase.h:134
virtual bool Retune(void)
Definition: channelbase.h:87
virtual int GetInputID(void) const
Definition: channelbase.h:67
uint m_inputId
Definition: channelbase.h:137
QString m_externalChanger
Definition: channelbase.h:141
static ChannelBase * CreateChannel(TVRec *tvrec, const GeneralDBOptions &genOpt, const DVBDBOptions &dvbOpt, const FireWireDBOptions &fwOpt, const QString &startchannel, bool enter_power_save_mode, QString &rbFileExt, bool setchan)
virtual bool InitPictureAttributes(void)
Definition: channelbase.h:93
virtual bool SetChannelByString(const QString &chan)=0
virtual bool InitializeInput(void)
Fills in input map from DB.
int GetMajorID(void)
bool KillScript(void)
virtual int SetFreqTable(const QString &)
Definition: channelbase.h:53
uint GetScriptStatus(bool holding_lock=false)
MythSystemLegacy * m_system
Definition: channelbase.h:146
QString m_startChanNum
Definition: channelbase.h:140
virtual QString GetDevice(void) const
Returns String representing device, useful for debugging.
Definition: channelbase.h:78
QString m_tuneToChannel
Definition: channelbase.h:142
Signal monitoring base class.
Definition: signalmonitor.h:31
This is the coordinating class of the Recorder Subsystem.
Definition: tv_rec.h:143
unsigned int uint
Definition: freesurround.h:24
PictureAdjustType
Definition: tv.h:124
ChannelChangeDirection
ChannelChangeDirection is an enumeration of possible channel changing directions.
Definition: tv.h:32
PictureAttribute