From dc28d681ee4172ffb1202f17e412eebe14f586f5 Mon Sep 17 00:00:00 2001 From: leslie Date: Wed, 10 Feb 2010 22:01:18 +0100 Subject: [PATCH] sasc: fix source & transponder handling --- contrib/sasc-ng/dvblb_plugins/plugin_cam.c | 5 +++-- contrib/sasc-ng/sc/misc.cpp | 10 +++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) 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: -- 2.39.5