124 int Put(
const uchar *Data,
int Count);
149 #define MTD_DONT_CALL(v) dsyslog("PROGRAMMING ERROR (%s,%d): DON'T CALL %s", __FILE__, __LINE__, __FUNCTION__); return v;
164 virtual void SendCaPmt(uint8_t CmdId)
override;
172 virtual bool ProvidesCa(
const int *CaSystemIds)
override;
178 virtual void InjectEit(
int Sid)
override;
cCamSlot * MasterSlot(void)
Returns this CAM slot's master slot, or a pointer to itself if it is a master slot.
virtual void StopDecrypting(void) override
Clears the list of CA_PMT entries and tells the CAM to stop decrypting.
virtual const char * GetCamName(void) override
Returns the name of the CAM in this slot, or NULL if there is no ready CAM in this slot.
virtual void InjectEit(int Sid) override
Injects a generated EIT with a "present event" for the given Sid into the TS data stream sent to the ...
virtual bool EnterMenu(void) override
Requests the CAM in this slot to start its menu.
virtual bool CanDecrypt(const cChannel *Channel, cMtdMapper *MtdMapper=NULL) override
Returns true if there is a CAM in this slot that is able to decrypt the given Channel (or at least cl...
virtual eModuleStatus ModuleStatus(void) override
Returns the status of the CAM in this slot.
virtual bool ProvidesCa(const int *CaSystemIds) override
Returns true if the CAM in this slot provides one of the given CaSystemIds.
cRingBufferLinear * mtdBuffer
virtual void StartDecrypting(void) override
Sends all CA_PMT entries to the CAM that have been modified since the last call to this function.
virtual bool HasUserIO(void) override
Returns true if there is a pending user interaction, which shall be retrieved via GetMenu() or GetEnq...
virtual bool HasMMI(void) override
Returns 'true' if the CAM in this slot has an active MMI.
virtual cCiEnquiry * GetEnquiry(void) override
Gets a pending enquiry, or NULL if there is no enquiry.
virtual ~cMtdCamSlot() override
int PutCat(const uchar *Data, int Count)
virtual uchar * Decrypt(uchar *Data, int &Count) override
If this is a CAM slot that can be freely assigned to any device, but will not be directly inserted in...
virtual bool Reset(void) override
Resets the CAM in this slot.
virtual cCamSlot * Spawn(void)
virtual bool RepliesToQuery(void) override
Returns true if the CAM in this slot replies to queries and thus supports MCD ("Multi Channel Decrypt...
virtual bool Ready(void) override
Returns 'true' if the CAM in this slot is ready to decrypt.
virtual bool TsPostProcess(uchar *Data) override
If there is a cCiSession that needs to do additional processing on TS packets (after the CAM has done...
virtual const int * GetCaSystemIds(void) override
cMtdMapper * MtdMapper(void)
virtual void SendCaPmt(uint8_t CmdId) override
int PutData(const uchar *Data, int Count)
virtual cCiMenu * GetMenu(void) override
Gets a pending menu, or NULL if there is no menu.
int Put(const uchar *Data, int Count)
Puts at most Count bytes of Data into the CAM slot which's index is derived from the PID of the TS pa...
bool IsActivating(void)
Returns true if any of the active MTD CAM slots is currently activating.
cVector< cMtdCamSlot * > camSlots
void StartDecrypting(void)
Tells all active MTD CAM slots to start decrypting.
cMtdHandler(void)
Creates a new MTD handler that distributes TS data received through calls to the Put() function to th...
bool IsDecrypting(void)
Returns true if any of the active MTD CAM slots is currently decrypting.
void CancelActivation(void)
Tells all active MTD CAM slots to cancel activation.
cMtdCamSlot * GetMtdCamSlot(cCamSlot *MasterSlot)
Creates a new MTD CAM slot, or reuses an existing one that is currently unused.
void StopDecrypting(void)
Tells all active MTD CAM slots to stop decrypting.
int Priority(void)
Returns the maximum priority of any of the active MTD CAM slots.
void UnAssignAll(void)
Unassigns all MTD CAM slots from their devices.
bool Devices(cVector< int > &DeviceNumbers)
Adds the numbers of the devices of any active MTD CAM slots to the given DeviceNumbers.
void MtdMapPid(uchar *p, cMtdMapper *MtdMapper)
void MtdMapSid(uchar *p, cMtdMapper *MtdMapper)