MythTV master
dvbcam.h
Go to the documentation of this file.
1#ifndef DVBCAM_H
2#define DVBCAM_H
3
4// Qt
5#include <QMap>
6#include <QMutex>
7#include <QRunnable>
8#include <QString>
9#include <QWaitCondition>
10
11// MythTV
12#include "dvbtypes.h"
13#include "mpeg/mpegtables.h"
14
15class ChannelBase;
16class cCiHandler;
17class MThread;
18class DVBCam;
19
20using pmt_list_t = QMap<const ChannelBase*, ProgramMapTable*>;
21
22class DVBCam : public QRunnable
23{
24 public:
25 explicit DVBCam(QString device);
26 ~DVBCam() override;
27
28 bool Start(void);
29 bool Stop(void);
30 bool IsRunning(void) const
31 {
32 QMutexLocker locker(&m_ciHandlerLock);
33 return m_ciHandlerRunning;
34 }
35
36 void SetPMT(const ChannelBase *chan, const ProgramMapTable *pmt);
37 void SetTimeOffset(double offset_in_seconds);
38
39 void run(void) override; // QRunnable
40
41 private:
42 void HandleUserIO(void);
43 void HandlePMT(void);
44 void RemoveDuplicateServices(void);
45 void SendPMT(const ProgramMapTable &pmt, uint cplm);
46
47 QString m_device;
48 int m_numslots {0};
49
50 mutable QMutex m_ciHandlerLock;
51 QWaitCondition m_ciHandlerWait;
52 bool m_ciHandlerDoRun {false};
53 bool m_ciHandlerRunning {false};
56
57 QMutex m_pmtLock;
60 bool m_havePmt {false};
61 bool m_pmtSent {false};
62 bool m_pmtUpdated {false};
63 bool m_pmtAdded {false};
64};
65
66#endif // DVBCAM_H
67
Abstract class providing a generic interface to tuning hardware.
Definition: channelbase.h:32
Definition: dvbcam.h:23
void SetPMT(const ChannelBase *chan, const ProgramMapTable *pmt)
Definition: dvbcam.cpp:342
pmt_list_t m_pmtAddList
Definition: dvbcam.h:59
void RemoveDuplicateServices(void)
Definition: dvbcam.cpp:208
void SendPMT(const ProgramMapTable &pmt, uint cplm)
Definition: dvbcam.cpp:397
DVBCam(QString device)
Definition: dvbcam.cpp:64
void HandlePMT(void)
Definition: dvbcam.cpp:259
void HandleUserIO(void)
Definition: dvbcam.cpp:155
MThread * m_ciHandlerThread
Definition: dvbcam.h:55
bool IsRunning(void) const
Definition: dvbcam.h:30
~DVBCam() override
Definition: dvbcam.cpp:83
bool m_pmtUpdated
Definition: dvbcam.h:62
bool m_ciHandlerRunning
Definition: dvbcam.h:53
void run(void) override
Definition: dvbcam.cpp:313
cCiHandler * m_ciHandler
Definition: dvbcam.h:54
bool Stop(void)
Definition: dvbcam.cpp:120
QMutex m_pmtLock
Definition: dvbcam.h:57
bool m_ciHandlerDoRun
Definition: dvbcam.h:52
QString m_device
Definition: dvbcam.h:47
QMutex m_ciHandlerLock
Definition: dvbcam.h:50
void SetTimeOffset(double offset_in_seconds)
Definition: dvbcam.cpp:375
int m_numslots
Definition: dvbcam.h:48
bool m_havePmt
Definition: dvbcam.h:60
QWaitCondition m_ciHandlerWait
Definition: dvbcam.h:51
pmt_list_t m_pmtList
Definition: dvbcam.h:58
bool m_pmtSent
Definition: dvbcam.h:61
bool m_pmtAdded
Definition: dvbcam.h:63
bool Start(void)
Definition: dvbcam.cpp:88
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
unsigned int uint
Definition: compat.h:60
QMap< const ChannelBase *, ProgramMapTable * > pmt_list_t
Definition: dvbcam.h:20