MythTV  master
channelscan_sm.h
Go to the documentation of this file.
1 /* -*- Mode: c++ -*-
2  * vim: set expandtab tabstop=4 shiftwidth=4:
3  *
4  * Original Project
5  * MythTV http://www.mythtv.org
6  *
7  * Copyright (c) 2004, 2005 John Pullan <john@pullan.org>
8  * Copyright (c) 2005 - 2007 Daniel Kristjansson
9  *
10  * Description:
11  * Collection of classes to provide channel scanning functionallity
12  *
13  * This program is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU General Public License
15  * as published by the Free Software Foundation; either version 2
16  * of the License, or (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software
25  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
26  * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
27  *
28  */
29 
30 #ifndef SISCAN_H
31 #define SISCAN_H
32 
33 // Qt includes
34 #include <QRunnable>
35 #include <QString>
36 #include <QList>
37 #include <QPair>
38 #include <QMap>
39 #include <QSet>
40 #include <QMutex>
41 
42 // MythTV includes
43 #include "frequencytables.h"
44 #include "iptvchannelfetcher.h"
45 #include "streamlisteners.h"
46 #include "scanmonitor.h"
47 #include "signalmonitorlistener.h"
48 #include "dtvconfparserhelpers.h" // for DTVTunerType
49 
50 class MThread;
51 class MSqlQuery;
52 
53 class ChannelBase;
54 class DTVChannel;
55 class V4LChannel;
56 class DVBChannel;
57 class HDHRChannel;
58 
59 class SignalMonitor;
60 class DTVSignalMonitor;
61 class DVBSignalMonitor;
62 
63 using pmt_vec_t = std::vector<const ProgramMapTable*>;
64 using pmt_map_t = QMap<uint, pmt_vec_t>;
65 class ScannedChannelInfo;
66 using ChannelListItem = QPair<transport_scan_items_it_t, ScannedChannelInfo*>;
67 using ChannelList = QList<ChannelListItem>;
68 
69 class ChannelScanSM;
71 {
72  public:
73  explicit AnalogSignalHandler(ChannelScanSM *_siscan) : m_siScan(_siscan) { }
74 
75  public:
76  inline void AllGood(void) override; // SignalMonitorListener
77  void StatusSignalLock(const SignalMonitorValue &/*val*/) override { } // SignalMonitorListener
78  void StatusChannelTuned(const SignalMonitorValue &/*val*/) override { } // SignalMonitorListener
79  void StatusSignalStrength(const SignalMonitorValue &/*val*/) override { } // SignalMonitorListener
80 
81  private:
83 };
84 
87  public DVBMainStreamListener,
89  public QRunnable
90 {
91  friend class AnalogSignalHandler;
92 
93  public:
94  ChannelScanSM(ScanMonitor *_scan_monitor,
95  const QString &_cardtype, ChannelBase* _channel, int _sourceID,
96  uint signal_timeout, uint channel_timeout,
97  QString _inputname, bool test_decryption);
98  ~ChannelScanSM() override;
99 
100  void StartScanner(void);
101  void StopScanner(void);
102 
103  bool ScanTransports(
104  int SourceID, const QString &std, const QString &mod, const QString &country,
105  const QString &table_start = QString(),
106  const QString &table_end = QString());
108  int sourceid, const QMap<QString,QString> &startChan);
109  bool ScanTransport(uint mplexid, bool follow_nit);
110  bool ScanCurrentTransport(const QString &sistandard);
111  bool ScanForChannels(
112  uint sourceid, const QString &std, const QString &cardtype,
113  const DTVChannelList &channels);
114  bool ScanIPTVChannels(uint sourceid, const fbox_chan_map_t &iptv_channels);
115 
116  bool ScanExistingTransports(uint sourceid, bool follow_nit);
117 
118  void SetAnalog(bool is_analog);
120  void SetSignalTimeout(uint val) { m_signalTimeout = val; }
124 
125  uint GetSignalTimeout(void) const { return m_signalTimeout; }
126  uint GetChannelTimeout(void) const { return m_channelTimeout; }
127 
131 
132  using chan_info_map_t = QMap<uint,ChannelInsertInfo>;
134  ScannedChannelInfo *scan_info) const;
135  uint GetCurrentTransportInfo(QString &chan, QString &chan_tr) const;
136  ScanDTVTransportList GetChannelList(bool addFullTS) const;
137 
138  // MPEG
139  void HandlePAT(const ProgramAssociationTable *pat) override; // MPEGStreamListener
140  void HandleCAT(const ConditionalAccessTable *cat) override; // MPEGStreamListener
141  void HandlePMT(uint program_num, const ProgramMapTable *pmt) override; // MPEGStreamListener
142  void HandleEncryptionStatus(uint pnum, bool encrypted) override; // MPEGStreamListener
143 
144  // ATSC Main
145  void HandleSTT(const SystemTimeTable */*stt*/) override {} // ATSCMainStreamListener
146  void HandleMGT(const MasterGuideTable *mgt) override; // ATSCMainStreamListener
147  void HandleVCT(uint tsid, const VirtualChannelTable *vct) override; // ATSCMainStreamListener
148 
149  // DVB Main
150  void HandleNIT(const NetworkInformationTable *nit) override; // DVBMainStreamListener
151  void HandleSDT(uint tsid, const ServiceDescriptionTable *sdt) override; // DVBMainStreamListener
152  void HandleTDT(const TimeDateTable */*tdt*/) override {} // DVBMainStreamListener
153 
154  // DVB Other
155  void HandleNITo(const NetworkInformationTable */*nit*/) override {} // DVBOtherStreamListener
156  void HandleSDTo(uint tsid, const ServiceDescriptionTable *sdt) override; // DVBOtherStreamListener
157  void HandleBAT(const BouquetAssociationTable *bat) override; // DVBOtherStreamListener
158 
159  private:
160  // some useful gets
161  DTVChannel *GetDTVChannel(void);
162  const DTVChannel *GetDTVChannel(void) const;
163  V4LChannel *GetV4LChannel(void);
165  DVBChannel *GetDVBChannel(void);
166  const DVBChannel *GetDVBChannel(void) const;
167 
168  void run(void) override; // QRunnable
169 
170  bool HasTimedOut(void);
171  void HandleActiveScan(void);
172  bool Tune(transport_scan_items_it_t transport);
175  static void LogLines(const QString& string);
176 
178  inline void UpdateScanPercentCompleted(void);
179 
180  bool CheckImportedList(const DTVChannelInfoList &channels,
181  uint mpeg_program_num,
182  QString &service_name,
183  QString &callsign,
184  QString &common_status_info);
185 
186  void IgnoreDataOnlyMsg( const QString &name, int aux_num);
187  void IgnoreEmptyChanMsg(const QString &name, int aux_num);
188  void IgnoreAudioOnlyMsg(const QString &name, int aux_num);
189  void IgnoreEncryptedMsg(const QString &name, int aux_num);
190 
191  bool TestNextProgramEncryption(void);
192  void UpdateScanTransports(uint frequency, const NetworkInformationTable *nit);
193  bool UpdateChannelInfo(bool wait_until_complete);
194 
195  void HandleAllGood(void); // used for analog scanner
196 
197  bool AddToList(uint mplexid);
198 
199  static QString loc(const ChannelScanSM *siscan);
200 
201  static const uint kDVBTableTimeout;
202  static const uint kATSCTableTimeout;
203  static const uint kMPEGTableTimeout;
204 
205  private:
206  // Set in constructor
215  bool m_setOtherTables {false};
216  QString m_inputName;
218  bool m_extendScanList {false};
219 
220  // Scanning parameters
225 
226  // Optional info
228 
230  mutable QMutex m_lock;
231 
232  // State
233  bool m_scanning {false};
234  volatile bool m_threadExit {false};
235  bool m_waitingForTables {false};
236  QElapsedTimer m_timer;
237 
238  // Transports List
240  QSet<uint32_t> m_tsScanned;
241  QMap<uint32_t,DTVMultiplex> m_extendTransports;
246  QMap<uint, uint> m_currentEncryptionStatus;
248  QMap<uint64_t, QString> m_defAuthorities;
249  bool m_dvbt2Tried {false};
250 
255 
256  // Analog Info
258 
261 
263  QMutex m_mutex;
264 };
265 
267 {
268  int tmp = (m_transportsScanned * 100) /
269  (m_scanTransports.size() + m_extendTransports.size());
271 }
272 
274 {
276 }
277 
278 #endif // SISCAN_H
MSqlQuery
QSqlQuery wrapper that fetches a DB connection from the connection pool.
Definition: mythdbcon.h:126
ChannelScanSM::m_otherTableTime
uint m_otherTableTime
Definition: channelscan_sm.h:214
VirtualChannelTable
This table contains information about the channels transmitted on this multiplex.
Definition: atsctables.h:190
ChannelScanSM::HandleSDT
void HandleSDT(uint tsid, const ServiceDescriptionTable *sdt) override
Definition: channelscan_sm.cpp:456
ATSCMainStreamListener
Definition: streamlisteners.h:113
ChannelScanSM::m_frequency
uint m_frequency
Definition: channelscan_sm.h:221
ChannelScanSM::HandleSDTo
void HandleSDTo(uint tsid, const ServiceDescriptionTable *sdt) override
Definition: channelscan_sm.cpp:573
ChannelScanSM::m_tsScanned
QSet< uint32_t > m_tsScanned
Definition: channelscan_sm.h:240
ChannelScanSM::SetSignalTimeout
void SetSignalTimeout(uint val)
Definition: channelscan_sm.h:120
ChannelScanSM::m_scannerThread
MThread * m_scannerThread
Scanner thread, runs ChannelScanSM::run()
Definition: channelscan_sm.h:260
ChannelScanSM::IgnoreDataOnlyMsg
void IgnoreDataOnlyMsg(const QString &name, int aux_num)
TimeDateTable
This table gives the current DVB stream time.
Definition: dvbtables.h:384
ChannelScanSM::m_lock
QMutex m_lock
The big lock.
Definition: channelscan_sm.h:230
ChannelScanSM::m_current
transport_scan_items_it_t m_current
Definition: channelscan_sm.h:243
AnalogSignalHandler::AllGood
void AllGood(void) override
Signal to be sent when you have a lock on all values.
Definition: channelscan_sm.h:273
hardwareprofile.devicelist.cat
def cat(file_name)
Definition: devicelist.py:95
ProgramMapTable
A PMT table maps a program described in the ProgramAssociationTable to various PID's which describe t...
Definition: mpegtables.h:682
ChannelScanSM::m_scanning
bool m_scanning
Definition: channelscan_sm.h:233
ChannelScanSM::HandleNITo
void HandleNITo(const NetworkInformationTable *) override
Definition: channelscan_sm.h:155
ScanMonitor::ScanPercentComplete
void ScanPercentComplete(int pct)
Definition: scanmonitor.cpp:103
DVBSignalMonitor
Definition: dvbsignalmonitor.h:18
ChannelScanSM::GetHDHRChannel
HDHRChannel * GetHDHRChannel(void)
Definition: channelscan_sm.cpp:1922
ChannelScanSM::m_currentTestingDecryption
bool m_currentTestingDecryption
Definition: channelscan_sm.h:245
ChannelScanSM::m_scanTransports
transport_scan_items_t m_scanTransports
Definition: channelscan_sm.h:242
ChannelScanSM::SetAnalog
void SetAnalog(bool is_analog)
Definition: channelscan_sm.cpp:245
AnalogSignalHandler::AnalogSignalHandler
AnalogSignalHandler(ChannelScanSM *_siscan)
Definition: channelscan_sm.h:73
ChannelScanSM::m_nitId
uint m_nitId
Definition: channelscan_sm.h:224
SourceID
Definition: videosource.cpp:2784
ChannelScanSM::m_dvbt2Tried
bool m_dvbt2Tried
Definition: channelscan_sm.h:249
ChannelScanSM::m_channelTimeout
uint m_channelTimeout
Definition: channelscan_sm.h:212
ChannelScanSM::Tune
bool Tune(transport_scan_items_it_t transport)
Definition: channelscan_sm.cpp:2152
ChannelScanSM::run
void run(void) override
This runs the event loop for ChannelScanSM until 'threadExit' is true.
Definition: channelscan_sm.cpp:1980
streamlisteners.h
ScannedChannelInfo
Definition: channelscan_sm.cpp:92
ChannelScanSM::kDVBTableTimeout
static const uint kDVBTableTimeout
SDT's should be sent every 2 seconds and NIT's every 10 seconds, so lets wait at least 30 seconds,...
Definition: channelscan_sm.h:201
ChannelScanSM::HandleSTT
void HandleSTT(const SystemTimeTable *) override
Definition: channelscan_sm.h:145
ChannelScanSM::m_sourceID
int m_sourceID
Definition: channelscan_sm.h:210
ChannelScanSM::m_signalTimeout
uint m_signalTimeout
Definition: channelscan_sm.h:211
ChannelScanSM::m_bouquetId
uint m_bouquetId
Definition: channelscan_sm.h:222
ChannelScanSM::m_scanMonitor
ScanMonitor * m_scanMonitor
Definition: channelscan_sm.h:207
SignalMonitorListener
Definition: signalmonitorlistener.h:22
ChannelScanSM::StopScanner
void StopScanner(void)
Stops the ChannelScanSM event loop and the signal monitor, blocking until both exit.
Definition: channelscan_sm.cpp:2253
ChannelScanSM::ChannelScanSM
ChannelScanSM(ScanMonitor *_scan_monitor, const QString &_cardtype, ChannelBase *_channel, int _sourceID, uint signal_timeout, uint channel_timeout, QString _inputname, bool test_decryption)
Definition: channelscan_sm.cpp:144
HDHRChannel
Definition: hdhrchannel.h:21
tmp
static guint32 * tmp
Definition: goom_core.cpp:31
ChannelScanSM::m_extendScanList
bool m_extendScanList
Definition: channelscan_sm.h:218
ChannelScanSM::ScanTransports
bool ScanTransports(int SourceID, const QString &std, const QString &mod, const QString &country, const QString &table_start=QString(), const QString &table_end=QString())
Generates a list of frequencies to scan and adds it to the scanTransport list, and then sets the scan...
Definition: channelscan_sm.cpp:2275
DTVTunerType
Definition: dtvconfparserhelpers.h:77
ChannelScanSM::GetV4LChannel
V4LChannel * GetV4LChannel(void)
Definition: channelscan_sm.cpp:1949
pmt_vec_t
std::vector< const ProgramMapTable * > pmt_vec_t
Definition: channelscan_sm.h:63
ChannelScanSM::m_mutex
QMutex m_mutex
Protect UpdateChannelInfo.
Definition: channelscan_sm.h:263
ChannelScanSM::m_setOtherTables
bool m_setOtherTables
Definition: channelscan_sm.h:215
ChannelScanSM::StartScanner
void StartScanner(void)
Starts the ChannelScanSM event loop.
Definition: channelscan_sm.cpp:1961
scanmonitor.h
DTVChannelList
std::vector< DTVTransport > DTVChannelList
Definition: dtvconfparser.h:70
ChannelScanSM::m_timer
QElapsedTimer m_timer
Definition: channelscan_sm.h:236
ChannelScanSM::HandleActiveScan
void HandleActiveScan(void)
Handles the TRANSPORT_LIST ChannelScanSM mode.
Definition: channelscan_sm.cpp:2077
ChannelScanSM::HandleNIT
void HandleNIT(const NetworkInformationTable *nit) override
Definition: channelscan_sm.cpp:505
signalmonitorlistener.h
ChannelBase
Abstract class providing a generic interface to tuning hardware.
Definition: channelbase.h:32
ChannelScanSM::m_analogSignalHandler
AnalogSignalHandler * m_analogSignalHandler
Definition: channelscan_sm.h:257
ChannelScanSM::m_otherTableTimeout
uint m_otherTableTimeout
Definition: channelscan_sm.h:213
ChannelScanSM::GetChannelTimeout
uint GetChannelTimeout(void) const
Definition: channelscan_sm.h:126
AnalogSignalHandler
Definition: channelscan_sm.h:71
ChannelScanSM::IgnoreEncryptedMsg
void IgnoreEncryptedMsg(const QString &name, int aux_num)
ChannelScanSM::m_extendTransports
QMap< uint32_t, DTVMultiplex > m_extendTransports
Definition: channelscan_sm.h:241
ChannelScanSM::HandleTDT
void HandleTDT(const TimeDateTable *) override
Definition: channelscan_sm.h:152
DTVTunerType::kTunerTypeUnknown
static const int kTunerTypeUnknown
Definition: dtvconfparserhelpers.h:103
MPEGStreamListener
Definition: streamlisteners.h:82
hardwareprofile.i18n.t
t
Definition: i18n.py:36
AnalogSignalHandler::StatusSignalLock
void StatusSignalLock(const SignalMonitorValue &) override
Signal to be sent as true when it is safe to begin or continue recording, and false if it may not be ...
Definition: channelscan_sm.h:77
DTVChannelInfoList
std::vector< DTVChannelInfo > DTVChannelInfoList
Definition: dtvconfparser.h:60
ChannelScanSM::HandlePAT
void HandlePAT(const ProgramAssociationTable *pat) override
Definition: channelscan_sm.cpp:375
ChannelScanSM::HandleEncryptionStatus
void HandleEncryptionStatus(uint pnum, bool encrypted) override
Definition: channelscan_sm.cpp:612
ChannelScanSM::m_channelsFound
uint m_channelsFound
Definition: channelscan_sm.h:253
ServiceDescriptionTable
This table tells the decoder on which PIDs to find A/V data.
Definition: dvbtables.h:111
ChannelScanSM::HandleBAT
void HandleBAT(const BouquetAssociationTable *bat) override
Definition: channelscan_sm.cpp:518
ChannelScanSM::UpdateChannelInfo
bool UpdateChannelInfo(bool wait_until_complete)
Definition: channelscan_sm.cpp:829
SignalMonitorValue
Definition: signalmonitorvalue.h:14
ChannelScanSM::IgnoreAudioOnlyMsg
void IgnoreAudioOnlyMsg(const QString &name, int aux_num)
ChannelScanSM::GetSignalTimeout
uint GetSignalTimeout(void) const
Definition: channelscan_sm.h:125
ChannelScanSM::UpdateScanTransports
void UpdateScanTransports(uint frequency, const NetworkInformationTable *nit)
Definition: channelscan_sm.cpp:733
ChannelScanSM::m_nextIt
transport_scan_items_it_t m_nextIt
Definition: channelscan_sm.h:244
ChannelScanSM::m_waitingForTables
bool m_waitingForTables
Definition: channelscan_sm.h:235
transport_scan_items_it_t
Definition: frequencytables.h:194
ChannelScanSM
Scanning class for cards that support a SignalMonitor class.
Definition: channelscan_sm.h:90
ChannelScanSM::GetCurrentTransportInfo
uint GetCurrentTransportInfo(QString &chan, QString &chan_tr) const
Definition: channelscan_sm.cpp:1313
uint
unsigned int uint
Definition: compat.h:141
ChannelScanSM::kATSCTableTimeout
static const uint kATSCTableTimeout
No logic here, lets just wait at least 10 seconds.
Definition: channelscan_sm.h:202
ScanDTVTransportList
std::vector< ScanDTVTransport > ScanDTVTransportList
Definition: dtvmultiplex.h:143
ChannelScanSM::m_scanDTVTunerType
DTVTunerType m_scanDTVTunerType
Definition: channelscan_sm.h:227
ChannelScanSM::HandlePMT
void HandlePMT(uint program_num, const ProgramMapTable *pmt) override
Definition: channelscan_sm.cpp:402
ProgramAssociationTable
The Program Association Table lists all the programs in a stream, and is always found on PID 0.
Definition: mpegtables.h:605
ChannelScanSM::GetDVBSignalMonitor
DVBSignalMonitor * GetDVBSignalMonitor(void)
Definition: channelscan_sm.cpp:1903
ChannelScanSM::loc
static QString loc(const ChannelScanSM *siscan)
Definition: channelscan_sm.cpp:80
SignalMonitor
Signal monitoring base class.
Definition: signalmonitor.h:32
ChannelScanSM::SetScanDTVTunerType
void SetScanDTVTunerType(int t)
Definition: channelscan_sm.h:123
ChannelScanSM::m_transportsScanned
int m_transportsScanned
Definition: channelscan_sm.h:239
ChannelScanSM::HandleMGT
void HandleMGT(const MasterGuideTable *mgt) override
Definition: channelscan_sm.cpp:438
ChannelScanSM::m_threadExit
volatile bool m_threadExit
Definition: channelscan_sm.h:234
ChannelScanSM::ScanIPTVChannels
bool ScanIPTVChannels(uint sourceid, const fbox_chan_map_t &iptv_channels)
Definition: channelscan_sm.cpp:2406
ChannelScanSM::SetSourceID
void SetSourceID(int SourceID)
Definition: channelscan_sm.h:119
ChannelScanSM::GetDTVSignalMonitor
DTVSignalMonitor * GetDTVSignalMonitor(void)
Definition: channelscan_sm.cpp:1898
MasterGuideTable
This table tells the decoder on which PIDs to find other tables, and their sizes and each table's cur...
Definition: atsctables.h:75
ChannelScanSM::GuessDTVTunerType
DTVTunerType GuessDTVTunerType(DTVTunerType type) const
Definition: channelscan_sm.cpp:709
DVBChannel
Provides interface to the tuning hardware when using DVB drivers.
Definition: dvbchannel.h:30
ChannelScanSM::AddToList
bool AddToList(uint mplexid)
Definition: channelscan_sm.cpp:2507
DVBMainStreamListener
Definition: streamlisteners.h:173
ChannelScanSM::GetDVBChannel
DVBChannel * GetDVBChannel(void)
Definition: channelscan_sm.cpp:1931
BouquetAssociationTable
Tells what channels can be found on each transponder for one bouquet (a bunch of channels from one pr...
Definition: dvbtables.h:190
ChannelScanSM::m_currentInfo
ScannedChannelInfo * m_currentInfo
Definition: channelscan_sm.h:254
ChannelScanSM::IgnoreEmptyChanMsg
void IgnoreEmptyChanMsg(const QString &name, int aux_num)
ChannelScanSM::HandleVCT
void HandleVCT(uint tsid, const VirtualChannelTable *vct) override
Definition: channelscan_sm.cpp:418
frequencytables.h
AnalogSignalHandler::m_siScan
ChannelScanSM * m_siScan
Definition: channelscan_sm.h:82
ChannelScanSM::m_defAuthorities
QMap< uint64_t, QString > m_defAuthorities
Definition: channelscan_sm.h:248
ChannelScanSM::m_signalMonitor
SignalMonitor * m_signalMonitor
Definition: channelscan_sm.h:209
ChannelScanSM::m_channelList
ChannelList m_channelList
Found Channel Info.
Definition: channelscan_sm.h:252
pmt_map_t
QMap< uint, pmt_vec_t > pmt_map_t
Definition: channelscan_sm.h:64
ChannelScanSM::m_channel
ChannelBase * m_channel
Definition: channelscan_sm.h:208
ChannelScanSM::chan_info_map_t
QMap< uint, ChannelInsertInfo > chan_info_map_t
Definition: channelscan_sm.h:132
ChannelScanSM::ScanCurrentTransport
bool ScanCurrentTransport(const QString &sistandard)
Definition: channelscan_sm.cpp:2597
ConditionalAccessTable
The CAT is used to transmit additional ConditionalAccessDescriptor instances, in addition to the ones...
Definition: mpegtables.h:845
MThread
This is a wrapper around QThread that does several additional things.
Definition: mthread.h:49
AnalogSignalHandler::StatusSignalStrength
void StatusSignalStrength(const SignalMonitorValue &) override
Signal to be sent with an actual signal value.
Definition: channelscan_sm.h:79
DTVSignalMonitor
This class is intended to detect the presence of needed tables.
Definition: dtvsignalmonitor.h:19
ChannelScanSM::TestNextProgramEncryption
bool TestNextProgramEncryption(void)
Definition: channelscan_sm.cpp:624
ChannelScanSM::HandleAllGood
void HandleAllGood(void)
Definition: channelscan_sm.cpp:253
ChannelList
QList< ChannelListItem > ChannelList
Definition: channelscan_sm.h:67
DVBOtherStreamListener
Definition: streamlisteners.h:183
SystemTimeTable
This table contains the GPS time at the time of transmission.
Definition: atsctables.h:679
ChannelScanSM::LogLines
static void LogLines(const QString &string)
Definition: channelscan_sm.cpp:365
DTVChannel
Class providing a generic interface to digital tuning hardware.
Definition: dtvchannel.h:34
ChannelScanSM::HandleCAT
void HandleCAT(const ConditionalAccessTable *cat) override
Definition: channelscan_sm.cpp:392
ChannelScanSM::kMPEGTableTimeout
static const uint kMPEGTableTimeout
No logic here, lets just wait at least 15 seconds.
Definition: channelscan_sm.h:203
ChannelScanSM::ScanTransportsStartingOn
bool ScanTransportsStartingOn(int sourceid, const QMap< QString, QString > &startChan)
Generates a list of frequencies to scan and adds it to the scanTransport list, and then sets the scan...
Definition: channelscan_sm.cpp:2445
ChannelScanSM::m_inputName
QString m_inputName
Definition: channelscan_sm.h:216
ChannelScanSM::GetChannelList
chan_info_map_t GetChannelList(transport_scan_items_it_t trans_info, ScannedChannelInfo *scan_info) const
Definition: channelscan_sm.cpp:1349
ChannelScanSM::GetDTVChannel
DTVChannel * GetDTVChannel(void)
Definition: channelscan_sm.cpp:1912
ChannelScanSM::ScanTransport
bool ScanTransport(uint mplexid, bool follow_nit)
Definition: channelscan_sm.cpp:2575
ChannelScanSM::m_testDecryption
bool m_testDecryption
Definition: channelscan_sm.h:217
V4LChannel
Implements tuning for TV cards using the V4L driver API, both versions 1 and 2.
Definition: v4lchannel.h:31
ChannelScanSM::SetScanDTVTunerType
void SetScanDTVTunerType(DTVTunerType t)
Definition: channelscan_sm.h:122
AnalogSignalHandler::StatusChannelTuned
void StatusChannelTuned(const SignalMonitorValue &) override
Signal to be sent with change change status.
Definition: channelscan_sm.h:78
ChannelScanSM::ScanExistingTransports
bool ScanExistingTransports(uint sourceid, bool follow_nit)
If we are not already scanning a frequency table, this creates a new frequency table from database an...
Definition: channelscan_sm.cpp:320
iptvchannelfetcher.h
ChannelScanSM::SetChannelTimeout
void SetChannelTimeout(uint val)
Definition: channelscan_sm.h:121
fbox_chan_map_t
QMap< QString, IPTVChannelInfo > fbox_chan_map_t
Definition: iptvchannelfetcher.h:62
ChannelScanSM::~ChannelScanSM
~ChannelScanSM() override
Definition: channelscan_sm.cpp:216
dtvconfparserhelpers.h
ChannelScanSM::m_currentEncryptionStatus
QMap< uint, uint > m_currentEncryptionStatus
Definition: channelscan_sm.h:246
ChannelScanSM::CheckImportedList
bool CheckImportedList(const DTVChannelInfoList &channels, uint mpeg_program_num, QString &service_name, QString &callsign, QString &common_status_info)
If we are scanning a dvb-utils import verify channel is in list.
Definition: channelscan_sm.cpp:2619
ChannelListItem
QPair< transport_scan_items_it_t, ScannedChannelInfo * > ChannelListItem
Definition: channelscan_sm.h:66
transport_scan_items_t
std::list< TransportScanItem > transport_scan_items_t
Definition: frequencytables.h:290
ChannelScanSM::m_currentEncryptionStatusChecked
QMap< uint, bool > m_currentEncryptionStatusChecked
Definition: channelscan_sm.h:247
ScanMonitor
Definition: scanmonitor.h:47
ChannelScanSM::UpdateScanPercentCompleted
void UpdateScanPercentCompleted(void)
Updates Transport Scan progress bar.
Definition: channelscan_sm.h:266
ChannelScanSM::HasTimedOut
bool HasTimedOut(void)
Definition: channelscan_sm.cpp:1996
ChannelScanSM::m_regionId
uint m_regionId
Definition: channelscan_sm.h:223
ChannelScanSM::ScanForChannels
bool ScanForChannels(uint sourceid, const QString &std, const QString &cardtype, const DTVChannelList &channels)
Definition: channelscan_sm.cpp:2366
ChannelScanSM::GetSignalMonitor
SignalMonitor * GetSignalMonitor(void)
Definition: channelscan_sm.h:128
NetworkInformationTable
This table tells the decoder on which PIDs to find other tables.
Definition: dvbtables.h:31