From: leslie Date: Wed, 10 Feb 2010 21:01:18 +0000 (+0100) Subject: sasc: fix source & transponder handling X-Git-Tag: upstream/620~97 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=dc28d681ee4172ffb1202f17e412eebe14f586f5;p=sasc-ng.git sasc: fix source & transponder handling --- diff --git a/contrib/sasc-ng/dvblb_plugins/plugin_cam.c b/contrib/sasc-ng/dvblb_plugins/plugin_cam.c index ac4c033..ad2d757 100644 --- a/contrib/sasc-ng/dvblb_plugins/plugin_cam.c +++ b/contrib/sasc-ng/dvblb_plugins/plugin_cam.c @@ -309,8 +309,9 @@ void process_cam(struct msg *msg, unsigned int priority) 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); - ch->SetSatTransponderData(source, sidmsg->nit.frequency, sidmsg->nit.polarization, sidmsg->nit.symbolrate, 0); + int source = 0x8000 | (BCD2INT(sidmsg->nit.orbit) & 0x7ff) | ((int)sidmsg->nit.is_east << 11); + static char Polarizations[] = { 'h', 'v', 'l', 'r' }; + ch->SetSatTransponderData(source, BCD2INT(sidmsg->nit.frequency)/100, Polarizations[sidmsg->nit.polarization], BCD2INT(sidmsg->nit.symbolrate), 0); dcnt = (MAXDPIDS >= sidmsg->epid_count) ? sidmsg->epid_count : MAXDPIDS; memcpy(dpid, sidmsg->epid, sizeof(int)*dcnt); diff --git a/contrib/sasc-ng/sc/misc.cpp b/contrib/sasc-ng/sc/misc.cpp index 1c679d2..d82412f 100644 --- a/contrib/sasc-ng/sc/misc.cpp +++ b/contrib/sasc-ng/sc/misc.cpp @@ -2,7 +2,15 @@ #include "include/vdr/device.h" #include #include -int cChannel::Transponder() const {return sid;} +int cChannel::Transponder() const +{ + int tf = frequency; + while (tf > 20000) + tf /= 1000; + if (IsSat()) + tf = Transponder(tf, polarization); + return tf; +} int cChannel::Transponder(int Frequency, char Polarization) { // some satellites have transponders at the same frequency, just with different polarization: