From: leslie Date: Wed, 22 Jul 2009 11:12:48 +0000 (+0800) Subject: sasc: adapt to new CA descr handling X-Git-Tag: upstream/620~254 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=70d6539748da215116cfe7d2671b453315060d27;p=sasc-ng.git sasc: adapt to new CA descr handling --- diff --git a/contrib/sasc-ng/dvblb_plugins/plugin_cam.c b/contrib/sasc-ng/dvblb_plugins/plugin_cam.c index 46e1664..ac4c033 100644 --- a/contrib/sasc-ng/dvblb_plugins/plugin_cam.c +++ b/contrib/sasc-ng/dvblb_plugins/plugin_cam.c @@ -87,19 +87,6 @@ extern void update_keys(int, unsigned char, int, unsigned char *, int); 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(); @@ -157,7 +144,7 @@ void cam_del_pid(struct sc_data *sc_data, struct cam_epid *cam_epid) { *(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; @@ -320,7 +307,6 @@ void process_cam(struct msg *msg, unsigned int priority) 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); @@ -364,7 +350,7 @@ void process_cam(struct msg *msg, unsigned int priority) //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); } diff --git a/contrib/sasc-ng/sc/include/vdr/channels.h b/contrib/sasc-ng/sc/include/vdr/channels.h index caa1a83..a535ed3 100644 --- a/contrib/sasc-ng/sc/include/vdr/channels.h +++ b/contrib/sasc-ng/sc/include/vdr/channels.h @@ -217,11 +217,6 @@ public: 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 { diff --git a/contrib/sasc-ng/sc/misc.cpp b/contrib/sasc-ng/sc/misc.cpp index b803586..1c679d2 100644 --- a/contrib/sasc-ng/sc/misc.cpp +++ b/contrib/sasc-ng/sc/misc.cpp @@ -51,18 +51,6 @@ cChannel::cChannel() { source=1; sid=1; groupSep=0; - pmtlen = 0; } cChannel::~cChannel() { } - -void cChannel::SetPMTBuf(const unsigned char *buf, int len) -{ - memcpy(pmtbuf, buf, len); - pmtlen = len; -} -int cChannel::GetPMTBuf(unsigned char *buf) { - memcpy(buf, pmtbuf, pmtlen); - return pmtlen; -} - diff --git a/contrib/sasc-ng/sc/sasccam.cpp b/contrib/sasc-ng/sc/sasccam.cpp index 4335696..df7a94a 100644 --- a/contrib/sasc-ng/sc/sasccam.cpp +++ b/contrib/sasc-ng/sc/sasccam.cpp @@ -37,16 +37,8 @@ public: ~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) { @@ -79,12 +71,13 @@ void sascCam::Stop() { 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); diff --git a/contrib/sasc-ng/sc/sasccam.h b/contrib/sasc-ng/sc/sasccam.h index 7d9fdb1..f1ce30a 100644 --- a/contrib/sasc-ng/sc/sasccam.h +++ b/contrib/sasc-ng/sc/sasccam.h @@ -9,5 +9,5 @@ public: sascCam(int devNum); void Stop(); void Tune(cChannel *ch); - void AddPrg(int sid, int *epid); + void AddPrg(int sid, int *epid, const unsigned char *pmt, int pmtlen); };