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 private:
40 void run(void) override; // QRunnable
41 void HandleUserIO(void);
42 void HandlePMT(void);
43 void RemoveDuplicateServices(void);
44 void SendPMT(const ProgramMapTable &pmt, uint cplm);
45
46 QString m_device;
47 int m_numslots {0};
48
49 mutable QMutex m_ciHandlerLock;
50 QWaitCondition m_ciHandlerWait;
51 bool m_ciHandlerDoRun {false};
52 bool m_ciHandlerRunning {false};
55
56 QMutex m_pmtLock;
59 bool m_havePmt {false};
60 bool m_pmtSent {false};
61 bool m_pmtUpdated {false};
62 bool m_pmtAdded {false};
63};
64
65#endif // DVBCAM_H
66
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:58
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:54
bool IsRunning(void) const
Definition: dvbcam.h:30
~DVBCam() override
Definition: dvbcam.cpp:83
bool m_pmtUpdated
Definition: dvbcam.h:61
bool m_ciHandlerRunning
Definition: dvbcam.h:52
void run(void) override
Definition: dvbcam.cpp:313
cCiHandler * m_ciHandler
Definition: dvbcam.h:53
bool Stop(void)
Definition: dvbcam.cpp:120
QMutex m_pmtLock
Definition: dvbcam.h:56
bool m_ciHandlerDoRun
Definition: dvbcam.h:51
QString m_device
Definition: dvbcam.h:46
QMutex m_ciHandlerLock
Definition: dvbcam.h:49
void SetTimeOffset(double offset_in_seconds)
Definition: dvbcam.cpp:375
int m_numslots
Definition: dvbcam.h:47
bool m_havePmt
Definition: dvbcam.h:59
QWaitCondition m_ciHandlerWait
Definition: dvbcam.h:50
pmt_list_t m_pmtList
Definition: dvbcam.h:57
bool m_pmtSent
Definition: dvbcam.h:60
bool m_pmtAdded
Definition: dvbcam.h:62
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
QMap< const ChannelBase *, ProgramMapTable * > pmt_list_t
Definition: dvbcam.h:20
unsigned int uint
Definition: freesurround.h:24