extern void SetCAMPrint(const char *_plugin_name, unsigned int plugin_id, unsigned int _print_level, unsigned int *_log_level);
const char *cPlugin::ConfigDirectory(const char *PluginName) {return opt_camdir;}
-int GetCaDescriptors(int Source, int Transponder, int ServiceId,
- const int *CaSystemIds, int BufSize, uchar *Data,
- bool &StreamFlag) {
- cChannel *ch;
- for(ch=Channels.First(); ch; ch=Channels.Next(ch)) {
- if(ch->Sid() == ServiceId) {
- return ch->GetPMTBuf(Data);
- }
- }
-// printf("Transfering %d bytes\n", pmtlen);
- return 0;
-}
-
static int init_sc(void) {
sc=(cPlugin *)VDRPluginCreator();
*(epidptr++) = cam_epid1->epid;
}
*epidptr = 0;
- sc_data->cam->AddPrg(cam_epid->sid,epidlist);
+ sc_data->cam->AddPrg(cam_epid->sid,epidlist,0,0);
//PrepareScLink(&link, sc_data->dev, OP_DELPID);
//link.data.pids.pid=cam_epid->epid;
//link.data.pids.type=cam_epid->type;
memset(dpid, 0, sizeof(int)*MAXDPIDS);
ch = new cChannel();
- ch->SetPMTBuf(sidmsg->ca, sidmsg->calen);
ch->SetId(0, 1, sidmsg->sid, 0);
//set source type to Satellite. Use orbit and E/W data
int source = 0x8000 | (BCD2INT(sidmsg->nit.orbit) & 0x7ff) | ((int)sidmsg->nit.is_east << 19);
//DoScLinkOp(sc, &link);
}
*epidptr = 0;
- sc_data->cam->AddPrg(sidmsg->sid,epidlist);
+ sc_data->cam->AddPrg(sidmsg->sid,epidlist,sidmsg->ca,sidmsg->calen);
free_sidmsg(sidmsg);
}
void SetCaDescriptors(int Level);
void SetLinkChannels(cLinkChannels *LinkChannels);
void SetRefChannel(cChannel *RefChannel);
- void SetPMTBuf(const unsigned char *buf, int len);
- int GetPMTBuf(unsigned char *buf);
-private:
- int pmtlen;
- unsigned char pmtbuf[4096];
};
class cChannels : public cRwLock, public cConfig<cChannel> {
~cSascDvbDevice() {};
bool SetCaDescr(ca_descr_t *ca_descr, bool initial);
bool SetCaPid(ca_pid_t *ca_pid);
- bool GetPrgCaids(int source, int transponder, int prg, caid_t *c);
};
-bool cSascDvbDevice::GetPrgCaids(int source, int transponder, int prg, caid_t *c)
-{
- *c++ = 0x0101;
- *c = 0;
- return true;
-}
-
extern void _SetCaDescr(int adapter, ca_descr_t *ca_descr);
bool cSascDvbDevice::SetCaDescr(ca_descr_t *ca_descr, bool initial)
{
{
cam->Stop();
}
-void sascCam::AddPrg(int sid, int *epid)
+void sascCam::AddPrg(int sid, int *epid, const unsigned char *pmt, int pmtlen)
{
int i = 0;
if(! epid)
return;
cPrg *prg=new cPrg(sid, 1);
+ if(pmt) prg->caDescr.Set(pmt,pmtlen);
while(epid[i]) {
cPrgPid *pid=new cPrgPid(5, epid[i++]);
prg->pids.Add(pid);