MythTV master
eitscanner.h
Go to the documentation of this file.
1// -*- Mode: c++ -*-
2#ifndef EITSCANNER_H
3#define EITSCANNER_H
4
5// Qt includes
6#include <QWaitCondition>
7#include <QStringList>
8#include <QDateTime>
9#include <QRunnable>
10#include <QMutex>
11
12class TVRec;
13class MThread;
14class ChannelBase;
15class DVBSIParser;
16class EITHelper;
17class ProgramMapTable;
18
20{
21 protected:
22 virtual ~EITSource() = default;
23 public:
24 virtual void SetEITHelper(EITHelper*) = 0;
25 virtual void SetEITRate(float rate) = 0;
26};
27
28class EITScanner : public QRunnable
29{
30 public:
31 explicit EITScanner(uint cardnum);
32 ~EITScanner() override { TeardownAll(); }
33
34 void StartEITEventProcessing(ChannelBase *channel, EITSource *eitSource);
35 void StopEITEventProcessing(void);
36
37 void StartActiveScan(TVRec *rec, std::chrono::seconds max_seconds_per_multiplex);
38 void StopActiveScan(void);
39
40 protected:
41 void run(void) override; // QRunnable
42
43 private:
44 void TeardownAll(void);
45 void RescheduleRecordings(void);
46
47 QMutex m_lock;
50
53 volatile bool m_exitThread {false};
54 QWaitCondition m_exitThreadCond; // protected by m_lock
55
56 TVRec *m_rec {nullptr};
57 volatile bool m_activeScan {false}; // active scan true, passive scan false
58 volatile bool m_activeScanStopped {true}; // protected by m_lock
59 QWaitCondition m_activeScanCond; // protected by m_lock
61 std::chrono::seconds m_activeScanTrigTime {0s};
63 QStringList::iterator m_activeScanNextChan;
64
66 uint m_sourceid {0}; // Video source ID
67 QString m_sourceName; // Video source name
68 uint m_eitCount {0}; // Processsed EIT events
69 uint m_mplexid {0}; // Transport stream multiplex ID
70};
71
72#endif // EITSCANNER_H
Abstract class providing a generic interface to tuning hardware.
Definition: channelbase.h:32
Acts as glue between ChannelBase, EITSource and EITHelper.
Definition: eitscanner.h:29
ChannelBase * m_channel
Definition: eitscanner.h:48
MThread * m_eventThread
Definition: eitscanner.h:52
uint m_eitCount
Definition: eitscanner.h:68
EITScanner(uint cardnum)
Definition: eitscanner.cpp:35
void TeardownAll(void)
Stop active scan, delete thread and delete eithelper.
Definition: eitscanner.cpp:55
QMutex m_lock
Definition: eitscanner.h:47
uint m_sourceid
Definition: eitscanner.h:66
EITHelper * m_eitHelper
Definition: eitscanner.h:51
void StopEITEventProcessing(void)
Stops inserting Event Information Tables into DB.
Definition: eitscanner.cpp:221
void run(void) override
This runs the event loop for EITScanner until 'm_exitThread' is true.
Definition: eitscanner.cpp:79
~EITScanner() override
Definition: eitscanner.h:32
QWaitCondition m_activeScanCond
Definition: eitscanner.h:59
QDateTime m_activeScanNextTrig
Definition: eitscanner.h:60
TVRec * m_rec
Definition: eitscanner.h:56
uint m_cardnum
Definition: eitscanner.h:65
void RescheduleRecordings(void)
Tells scheduler about programming changes.
Definition: eitscanner.cpp:179
QWaitCondition m_exitThreadCond
Definition: eitscanner.h:54
void StartEITEventProcessing(ChannelBase *channel, EITSource *eitSource)
Start inserting Event Information Tables from the multiplex we happen to be tuned to into the databas...
Definition: eitscanner.cpp:188
void StartActiveScan(TVRec *rec, std::chrono::seconds max_seconds_per_multiplex)
Start active EIT scan.
Definition: eitscanner.cpp:253
volatile bool m_activeScan
Definition: eitscanner.h:57
std::chrono::seconds m_activeScanTrigTime
Definition: eitscanner.h:61
QStringList::iterator m_activeScanNextChan
Definition: eitscanner.h:63
QStringList m_activeScanChannels
Definition: eitscanner.h:62
volatile bool m_exitThread
Definition: eitscanner.h:53
EITSource * m_eitSource
Definition: eitscanner.h:49
volatile bool m_activeScanStopped
Definition: eitscanner.h:58
QString m_sourceName
Definition: eitscanner.h:67
uint m_mplexid
Definition: eitscanner.h:69
void StopActiveScan(void)
Stop active EIT scan.
Definition: eitscanner.cpp:333
virtual ~EITSource()=default
virtual void SetEITHelper(EITHelper *)=0
virtual void SetEITRate(float rate)=0
This is a wrapper around QThread that does several additional things.
Definition: mthread.h:49
A PMT table maps a program described in the ProgramAssociationTable to various PID's which describe t...
Definition: mpegtables.h:676
This is the coordinating class of the Recorder Subsystem.
Definition: tv_rec.h:143
unsigned int uint
Definition: freesurround.h:24