From a6d58a2cfc617a048bbadf9cafc378a9c579aade Mon Sep 17 00:00:00 2001 From: Markus Ehrnsperger Date: Tue, 8 Feb 2011 20:57:16 +0100 Subject: lnb-sharing 0.1.2 - Change: Make it easier to apply this patch together with the dynamite-Plugin patch. Note: this is mostly for maintainers of distributions and multi-patches. It will (must probably) not be possible for devices added with dynamite to share LNBs. Some concept work is required for this: How can VDR uniquely identify a device? How can a user identify such a device on OSD? --- HISTORY.LNBshare | 3 +++ config.h | 2 +- dvbdevice.c | 17 +++++++++-------- dvbdevice.h | 1 - 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/HISTORY.LNBshare b/HISTORY.LNBshare index 6f95a45..d65d214 100644 --- a/HISTORY.LNBshare +++ b/HISTORY.LNBshare @@ -35,3 +35,6 @@ Version for VDR 1.4.3 - Fix: If several DVB devices share one LNB, only the first of these devises will send signals like 22kHz. See README.LNBshare for details - README.LNBshare: Include warning about 1.3 FF cards with buggy Loop-Through that might result in destruction of LNBP-Chips if the Loop-Through is used - Fix: Log file: Numbering of 'LNBs' not connected to a SAT DVB card + +2010-02-08 Version 0.1.2 for VDR version 1.7.16 +- Change: Make it easier to apply this patch together with the dynamite-Plugin patch. Note: this is mostly for maintainers of distributions and multi-patches. It will (must probably) not be possible for devices added with dynamite to share LNBs. Some concept work is required for this: How can VDR uniquely identify a device? How can a user identify such a device on OSD? diff --git a/config.h b/config.h index 60d8027..05ebdba 100644 --- a/config.h +++ b/config.h @@ -293,7 +293,7 @@ public: int EmergencyExit; //ML - #define LNB_SHARING_VERSION "0.1.1" + #define LNB_SHARING_VERSION "0.1.2" int VerboseLNBlog; #define MAXDEVICES 16 // Since VDR 1.3.32 we can not #include "device.h" for MAXDEVICES anymore. // With this workaround a warning will be shown during compilation if diff --git a/dvbdevice.c b/dvbdevice.c index ab9496a..ae4d82e 100644 --- a/dvbdevice.c +++ b/dvbdevice.c @@ -261,7 +261,7 @@ private: int adapter, frontend; int tuneTimeout; int lockTimeout; - bool lnbSendSignals; // LNB Sharing + bool lnbSendSignals; // LNB Sharing. false if this device must not send signals to the LNB (like 22 kHz, ...). time_t lastTimeoutReport; fe_delivery_system frontendType; cChannel channel; @@ -274,7 +274,7 @@ private: bool SetFrontend(void); virtual void Action(void); public: - cDvbTuner(int Device, int Fd_Frontend, int Adapter, int Frontend, fe_delivery_system FrontendType, bool LnbSendSignals); + cDvbTuner(int Device, int Fd_Frontend, int Adapter, int Frontend, fe_delivery_system FrontendType, cDvbDevice *Dvbdevice); // LNB Sharing virtual ~cDvbTuner(); const cChannel *GetTransponder(void) const { return &channel; } bool IsTunedTo(const cChannel *Channel) const; @@ -282,9 +282,13 @@ public: bool Locked(int TimeoutMs = 0); }; -cDvbTuner::cDvbTuner(int Device, int Fd_Frontend, int Adapter, int Frontend, fe_delivery_system FrontendType, bool LnbSendSignals) // LNB Sharing +cDvbTuner::cDvbTuner(int Device, int Fd_Frontend, int Adapter, int Frontend, fe_delivery_system FrontendType, cDvbDevice *Dvbdevice) // LNB Sharing { - lnbSendSignals = LnbSendSignals; // LNB Sharing +// LNB Sharing + if(Dvbdevice) { + lnbSendSignals = Dvbdevice->IsLnbSendSignals(); + } else lnbSendSignals = true; +// END LNB Sharing device = Device; fd_frontend = Fd_Frontend; adapter = Adapter; @@ -730,10 +734,8 @@ cDvbDevice::cDvbDevice(int Adapter, int Frontend) lnbState = -1; SetLnbNrFromSetup(); lnbSource = NULL; + dvbTuner = new cDvbTuner(CardIndex() + 1, fd_frontend, adapter, frontend, frontendType, this); //ML-Ende - - - dvbTuner = new cDvbTuner(CardIndex() + 1, fd_frontend, adapter, frontend, frontendType, lnbSendSignals); } } else @@ -1069,7 +1071,6 @@ void cDvbDevice::SetLnbNrFromSetup(void) { lnbNr = Setup.CardUsesLnbNr[CardIndex()]; isyslog("LNB-sharing: setting device %d to use LNB %d", CardIndex() + 1, lnbNr); - lnbSendSignals = IsLnbSendSignals(); } bool cDvbDevice::IsShareLnb(const cDevice *Device) diff --git a/dvbdevice.h b/dvbdevice.h index be3ee13..b3d09bc 100644 --- a/dvbdevice.h +++ b/dvbdevice.h @@ -133,7 +133,6 @@ private: // cDiseqc *lnbSource; // can not #include "diseqc.h". A workaround follows: int *lnbSource; // [DiSEqC] DiSEqC-Source int lnbNr; // Number of LNB used - bool lnbSendSignals; // false if this device must not send signals to the LNB (like 22 kHz, ...). public: int *LnbSource(void) { return lnbSource; }; -- cgit v1.2.3