MythTV master
dtvsignalmonitor.h
Go to the documentation of this file.
1// -*- Mode: c++ -*-
2
3#ifndef DTVSIGNALMONITOR_H
4#define DTVSIGNALMONITOR_H
5
6#include <vector>
7
9#include "signalmonitor.h"
10#include "signalmonitorvalue.h"
11
12class DTVChannel;
13
15 public MPEGStreamListener,
19{
20 public:
21 DTVSignalMonitor(int db_cardnum,
22 DTVChannel *_channel,
23 bool _release_stream,
24 uint64_t wait_for_mask);
25 ~DTVSignalMonitor() override;
26
27 public:
28 QStringList GetStatusList(void) const override; // SignalMonitor
29
30 void SetChannel(int major, int minor);
31 int GetMajorChannel() const { return m_majorChannel; }
32 int GetMinorChannel() const { return m_minorChannel; }
33
34 void SetProgramNumber(int progNum);
35 int GetProgramNumber() const { return m_programNumber; }
36
37 void SetDVBService(uint network_id, uint transport_id, int service_id);
38 uint GetTransportID(void) const { return m_transportID; }
39 uint GetNetworkID(void) const { return m_networkID; }
40 int GetServiceID(void) const { return m_programNumber; }
41
44
46 virtual void SetRotorTarget(float /*target*/) {}
47 virtual void GetRotorStatus(bool &was_moving, bool &is_moving)
48 { was_moving = is_moving = false; }
49 virtual void SetRotorValue(int /*val*/) {}
50
51 void AddFlags(uint64_t _flags) override; // SignalMonitor
52 void RemoveFlags(uint64_t _flags) override; // SignalMonitor
53
56 virtual void SetStreamData(MPEGStreamData* data);
57
66
68 const MPEGStreamData *GetStreamData() const { return m_streamData; }
70 const ATSCStreamData *GetATSCStreamData() const;
72 const DVBStreamData *GetDVBStreamData() const;
74 const ScanStreamData *GetScanStreamData() const;
75
76 bool IsAllGood(void) const override; // SignalMonitor
77
78 // MPEG
79 void HandlePAT(const ProgramAssociationTable *pat) override; // MPEGStreamListener
80 void HandleCAT(const ConditionalAccessTable */*cat*/) override {} // MPEGStreamListener
81 void HandlePMT(uint program_num, const ProgramMapTable *pmt) override; // MPEGStreamListener
82 void HandleEncryptionStatus(uint pnum, bool enc_status) override; // MPEGStreamListener
83
84 // ATSC Main
85 void HandleSTT(const SystemTimeTable *stt) override; // ATSCMainStreamListener
86 void HandleVCT(uint /*tsid*/, const VirtualChannelTable */*vct*/) override {} // ATSCMainStreamListener
87 void HandleMGT(const MasterGuideTable *mgt) override; // ATSCMainStreamListener
88
89 // ATSC Aux
90 void HandleTVCT(uint pid, const TerrestrialVirtualChannelTable *tvct) override; // ATSCAuxStreamListener
91 void HandleCVCT(uint pid, const CableVirtualChannelTable *cvct) override; // ATSCAuxStreamListener
92 void HandleRRT(const RatingRegionTable */*rrt*/) override {} // ATSCAuxStreamListener
93 void HandleDCCT(const DirectedChannelChangeTable */*dcct*/) override {} // ATSCAuxStreamListener
95 const DirectedChannelChangeSelectionCodeTable */*dccsct*/) override {} // ATSCAuxStreamListener
96
97 // DVB Main
98 void HandleTDT(const TimeDateTable *tdt) override; // DVBMainStreamListener
99 void HandleNIT(const NetworkInformationTable *nit) override; // DVBMainStreamListener
100 void HandleSDT(uint tsid, const ServiceDescriptionTable *sdt) override; // DVBMainStreamListener
101
102 void IgnoreEncrypted(bool ignore) { m_ignoreEncrypted = ignore; }
103
104 protected:
106 void UpdateMonitorValues(void);
107 void UpdateListeningForEIT(void);
108
109 protected:
111 std::vector<uint> m_eitPids;
126
127 // ATSC tuning info
130 // DVB tuning info
133 // DVB scanning info
136 // MPEG/DVB/ATSC tuning info
138 // table_id & CRC of tables already seen
139 QList<uint64_t> m_seenTableCrc;
140
141 bool m_ignoreEncrypted {false};
142};
143
144#endif // DTVSIGNALMONITOR_H
Encapsulates data about ATSC stream and emits events for most tables.
This table contains information about the cable channels transmitted on this multiplex.
Definition: atsctables.h:423
The CAT is used to transmit additional ConditionalAccessDescriptor instances, in addition to the ones...
Definition: mpegtables.h:839
Class providing a generic interface to digital tuning hardware.
Definition: dtvchannel.h:34
This class is intended to detect the presence of needed tables.
bool IsAllGood(void) const override
void HandlePMT(uint program_num, const ProgramMapTable *pmt) override
SignalMonitorValue m_matchingVCT
void HandleDCCT(const DirectedChannelChangeTable *) override
void SetDVBService(uint network_id, uint transport_id, int service_id)
SignalMonitorValue m_matchingPAT
void HandlePAT(const ProgramAssociationTable *pat) override
int GetMajorChannel() const
SignalMonitorValue m_matchingCrypt
uint GetNetworkID(void) const
void UpdateListeningForEIT(void)
int GetMinorChannel() const
void AddFlags(uint64_t _flags) override
void HandleNIT(const NetworkInformationTable *nit) override
uint GetDetectedTransportID(void) const
void HandleTDT(const TimeDateTable *tdt) override
std::vector< uint > m_eitPids
virtual void SetRotorValue(int)
QStringList GetStatusList(void) const override
Returns QStringList containing all signals and their current values.
DTVChannel * GetDTVChannel(void)
SignalMonitorValue m_matchingPMT
virtual void GetRotorStatus(bool &was_moving, bool &is_moving)
SignalMonitorValue m_seenPMT
uint GetTransportID(void) const
~DTVSignalMonitor() override
int GetProgramNumber() const
void HandleCAT(const ConditionalAccessTable *) override
SignalMonitorValue m_matchingMGT
void HandleSTT(const SystemTimeTable *stt) override
void HandleMGT(const MasterGuideTable *mgt) override
SignalMonitorValue m_matchingSDT
SignalMonitorValue m_seenSDT
void HandleVCT(uint, const VirtualChannelTable *) override
SignalMonitorValue m_seenVCT
void HandleDCCSCT(const DirectedChannelChangeSelectionCodeTable *) override
uint GetDetectedNetworkID(void) const
void HandleRRT(const RatingRegionTable *) override
void UpdateMonitorValues(void)
SignalMonitorValue m_seenPAT
ATSCStreamData * GetATSCStreamData()
Returns the ATSC stream data if it exists.
void SetChannel(int major, int minor)
virtual void SetRotorTarget(float)
Sets rotor target pos from 0.0 to 1.0.
void RemoveFlags(uint64_t _flags) override
SignalMonitorValue m_seenMGT
void HandleCVCT(uint pid, const CableVirtualChannelTable *cvct) override
void HandleSDT(uint tsid, const ServiceDescriptionTable *sdt) override
void IgnoreEncrypted(bool ignore)
MPEGStreamData * GetStreamData()
Returns the MPEG stream data if it exists.
MPEGStreamData * m_streamData
SignalMonitorValue m_seenNIT
void SetProgramNumber(int progNum)
DTVSignalMonitor(int db_cardnum, DTVChannel *_channel, bool _release_stream, uint64_t wait_for_mask)
SignalMonitorValue m_seenCrypt
ScanStreamData * GetScanStreamData()
Returns the scan stream data if it exists.
DVBStreamData * GetDVBStreamData()
Returns the DVB stream data if it exists.
void HandleEncryptionStatus(uint pnum, bool enc_status) override
const MPEGStreamData * GetStreamData() const
Returns the MPEG stream data if it exists.
QList< uint64_t > m_seenTableCrc
SignalMonitorValue m_matchingNIT
int GetServiceID(void) const
void HandleTVCT(uint pid, const TerrestrialVirtualChannelTable *tvct) override
virtual void SetStreamData(MPEGStreamData *data)
Sets the MPEG stream data for DTVSignalMonitor to use, and connects the table signals to the monitor.
No one has had time to decode this table yet...
Definition: atsctables.h:832
No one has had time to decode this table yet...
Definition: atsctables.h:765
Encapsulates data about MPEG stream and emits events for each table.
This table tells the decoder on which PIDs to find other tables, and their sizes and each table's cur...
Definition: atsctables.h:83
This table tells the decoder on which PIDs to find other tables.
Definition: dvbtables.h:34
The Program Association Table lists all the programs in a stream, and is always found on PID 0.
Definition: mpegtables.h:599
A PMT table maps a program described in the ProgramAssociationTable to various PID's which describe t...
Definition: mpegtables.h:676
No one has had time to decode this table yet...
Definition: atsctables.h:749
This table tells the decoder on which PIDs to find A/V data.
Definition: dvbtables.h:114
Signal monitoring base class.
Definition: signalmonitor.h:31
This table contains the GPS time at the time of transmission.
Definition: atsctables.h:688
This table contains information about the terrestrial channels transmitted on this multiplex.
Definition: atsctables.h:354
This table gives the current DVB stream time.
Definition: dvbtables.h:387
This table contains information about the channels transmitted on this multiplex.
Definition: atsctables.h:197
#define minor(X)
Definition: compat.h:74
unsigned int uint
Definition: freesurround.h:24