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);
#include "include/vdr/device.h"
#include <ctype.h>
#include <linux/dvb/ca.h>
-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: