vdr 2.6.6
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
cReceiver Class Referenceabstract

#include <receiver.h>

Public Member Functions

 cReceiver (const cChannel *Channel=NULL, int Priority=MINPRIORITY)
 
virtual ~cReceiver ()
 
int Priority (void)
 
void SetPriority (int Priority)
 
bool AddPid (int Pid)
 
bool AddPids (const int *Pids)
 
bool AddPids (int Pid1, int Pid2, int Pid3=0, int Pid4=0, int Pid5=0, int Pid6=0, int Pid7=0, int Pid8=0, int Pid9=0)
 
bool SetPids (const cChannel *Channel)
 
void DelPid (int Pid)
 
void DelPids (const int *Pids)
 
tChannelID ChannelID (void)
 
int NumPids (void) const
 
bool IsAttached (void)
 

Protected Member Functions

cDeviceDevice (void)
 
void Detach (void)
 
virtual void Activate (bool On)
 
virtual void Receive (const uchar *Data, int Length)=0
 

Private Member Functions

bool WantsPid (int Pid)
 

Private Attributes

cDevicedevice
 
tChannelID channelID
 
int priority
 
int pids [MAXRECEIVEPIDS]
 
int numPids
 
time_t lastScrambledPacket
 
time_t startScrambleDetection
 
int scramblingTimeout
 
time_t startEitInjection
 
time_t lastEitInjection
 

Friends

class cDevice
 

Detailed Description

Definition at line 17 of file receiver.h.

Constructor & Destructor Documentation

◆ cReceiver()

cReceiver::cReceiver ( const cChannel * Channel = NULL,
int Priority = MINPRIORITY )

Creates a new receiver for the given Channel with the given Priority.

If Channel is not NULL, its pids are set by a call to SetPids(). Otherwise pids can be added to the receiver by separate calls to the AddPid[s] functions. The total number of PIDs added to a receiver must not exceed MAXRECEIVEPIDS. Priority may be any value in the range MINPRIORITY...MAXPRIORITY. Negative values indicate that this cReceiver may be detached at any time in favor of a timer recording or live viewing (without blocking the cDevice it is attached to).

Definition at line 14 of file receiver.c.

References device, lastEitInjection, lastScrambledPacket, numPids, Priority(), scramblingTimeout, SetPids(), SetPriority(), startEitInjection, and startScrambleDetection.

◆ ~cReceiver()

cReceiver::~cReceiver ( )
virtual

Definition at line 27 of file receiver.c.

References device, and esyslog.

Member Function Documentation

◆ Activate()

virtual void cReceiver::Activate ( bool On)
inlineprotectedvirtual

This function is called just before the cReceiver gets attached to (On == true) and right after it gets detached from (On == false) a cDevice.

It can be used to do things like starting/stopping a thread. It is guaranteed that Receive() will not be called before Activate(true).

Reimplemented in cRecorder, and cTransfer.

Definition at line 34 of file receiver.h.

Referenced by cDevice::AttachReceiver(), and cDevice::Detach().

◆ AddPid()

bool cReceiver::AddPid ( int Pid)

Adds the given Pid to the list of PIDs of this receiver.

Definition at line 42 of file receiver.c.

References cDevice::AddPid(), device, dsyslog, MAXRECEIVEPIDS, numPids, pids, and WantsPid().

Referenced by cCaPidReceiver::AddEmmPid(), AddPids(), AddPids(), cCaPidReceiver::cCaPidReceiver(), cLiveSubtitle::cLiveSubtitle(), and SetPids().

◆ AddPids() [1/2]

bool cReceiver::AddPids ( const int * Pids)

Adds the given zero terminated list of Pids to the list of PIDs of this receiver.

Definition at line 60 of file receiver.c.

References AddPid().

Referenced by cCamSlot::BuildCaPmts(), and SetPids().

◆ AddPids() [2/2]

bool cReceiver::AddPids ( int Pid1,
int Pid2,
int Pid3 = 0,
int Pid4 = 0,
int Pid5 = 0,
int Pid6 = 0,
int Pid7 = 0,
int Pid8 = 0,
int Pid9 = 0 )

Adds the given Pids to the list of PIDs of this receiver.

Definition at line 71 of file receiver.c.

References AddPid().

◆ ChannelID()

tChannelID cReceiver::ChannelID ( void )
inline

Definition at line 80 of file receiver.h.

References channelID.

Referenced by cDevice::Action(), cDevice::AttachReceiver(), and cDevice::Detach().

◆ DelPid()

void cReceiver::DelPid ( int Pid)

Deletes the given Pid from the list of PIDs of this receiver.

Definition at line 90 of file receiver.c.

References cDevice::DelPid(), device, numPids, and pids.

Referenced by cCaPidReceiver::DelEmmPids(), and DelPids().

◆ DelPids()

void cReceiver::DelPids ( const int * Pids)

Deletes the given zero terminated list of Pids from the list of PIDs of this receiver.

Definition at line 106 of file receiver.c.

References DelPid().

Referenced by cCamSlot::BuildCaPmts().

◆ Detach()

void cReceiver::Detach ( void )
protected

◆ Device()

cDevice * cReceiver::Device ( void )
inlineprotected

Definition at line 32 of file receiver.h.

References device.

Referenced by cCaPidReceiver::Receive(), and cCaActivationReceiver::Receive().

◆ IsAttached()

bool cReceiver::IsAttached ( void )
inline

Returns true if this receiver is (still) attached to a device.

A receiver may be automatically detached from its device in case the device is needed otherwise, so code that uses a cReceiver should repeatedly check whether it is still attached, and if it isn't, delete it (or take any other appropriate measures).

Definition at line 82 of file receiver.h.

References device.

Referenced by cRecordControl::Process().

◆ NumPids()

int cReceiver::NumPids ( void ) const
inline

Definition at line 81 of file receiver.h.

References numPids.

Referenced by cCaPidReceiver::HasCaPids().

◆ Priority()

int cReceiver::Priority ( void )
inline

Definition at line 57 of file receiver.h.

References priority.

Referenced by cDevice::Action(), cReceiver(), and SetPriority().

◆ Receive()

virtual void cReceiver::Receive ( const uchar * Data,
int Length )
protectedpure virtual

This function is called from the cDevice we are attached to, and delivers one TS packet from the set of PIDs the cReceiver has requested.

The data packet must be accepted immediately, and the call must return as soon as possible, without any unnecessary delay. Each TS packet will be delivered only ONCE, so the cReceiver must make sure that it will be able to buffer the data if necessary.

Implemented in cCaPidReceiver, cCaActivationReceiver, cLiveSubtitle, cRecorder, and cTransfer.

Referenced by cDevice::Action().

◆ SetPids()

bool cReceiver::SetPids ( const cChannel * Channel)

Sets the PIDs of this receiver to those of the given Channel, replacing any previously stored PIDs.

If Channel is NULL, all PIDs will be cleared. Parameters in the Setup may control whether certain types of PIDs (like Dolby Digital, for instance) are actually set. The Channel's ID is stored and can later be retrieved through ChannelID(). The ChannelID is necessary to allow the device that will be used for this receiver to detect and store whether the channel can be decrypted in case this is an encrypted channel.

Definition at line 76 of file receiver.c.

References AddPid(), AddPids(), cChannel::Apids(), channelID, cChannel::Dpids(), cChannel::GetChannelID(), numPids, cChannel::Ppid(), cChannel::Spids(), and cChannel::Vpid().

Referenced by cReceiver().

◆ SetPriority()

void cReceiver::SetPriority ( int Priority)

Definition at line 37 of file receiver.c.

References constrain(), MAXPRIORITY, MINPRIORITY, priority, and Priority().

Referenced by cReceiver().

◆ WantsPid()

bool cReceiver::WantsPid ( int Pid)
private

Definition at line 114 of file receiver.c.

References numPids, and pids.

Referenced by cDevice::Action(), AddPid(), and cDevice::DetachAll().

Friends And Related Symbol Documentation

◆ cDevice

friend class cDevice
friend

Definition at line 18 of file receiver.h.

Member Data Documentation

◆ channelID

tChannelID cReceiver::channelID
private

Definition at line 21 of file receiver.h.

Referenced by ChannelID(), and SetPids().

◆ device

cDevice* cReceiver::device
private

◆ lastEitInjection

time_t cReceiver::lastEitInjection
private

Definition at line 29 of file receiver.h.

Referenced by cDevice::Action(), cDevice::AttachReceiver(), and cReceiver().

◆ lastScrambledPacket

time_t cReceiver::lastScrambledPacket
private

Definition at line 25 of file receiver.h.

Referenced by cDevice::Action(), and cReceiver().

◆ numPids

int cReceiver::numPids
private

◆ pids

int cReceiver::pids[MAXRECEIVEPIDS]
private

Definition at line 23 of file receiver.h.

Referenced by AddPid(), cDevice::AttachReceiver(), DelPid(), cDevice::Detach(), and WantsPid().

◆ priority

int cReceiver::priority
private

Definition at line 22 of file receiver.h.

Referenced by cDevice::AttachReceiver(), cDevice::Detach(), Priority(), and SetPriority().

◆ scramblingTimeout

int cReceiver::scramblingTimeout
private

Definition at line 27 of file receiver.h.

Referenced by cDevice::Action(), cDevice::AttachReceiver(), and cReceiver().

◆ startEitInjection

time_t cReceiver::startEitInjection
private

Definition at line 28 of file receiver.h.

Referenced by cDevice::Action(), cDevice::AttachReceiver(), and cReceiver().

◆ startScrambleDetection

time_t cReceiver::startScrambleDetection
private

Definition at line 26 of file receiver.h.

Referenced by cDevice::Action(), cDevice::AttachReceiver(), and cReceiver().


The documentation for this class was generated from the following files: