From b4e66d3d624cc1cfbe2f435f02810f544633d993 Mon Sep 17 00:00:00 2001 From: Markus Ehrnsperger Date: Wed, 16 Feb 2011 21:49:46 +0100 Subject: lnb-sharing 0.1.3 - Fix an error that can occur if devices are explizitly specified (-D or --device) during start of VDR. Thanks to Lars (mini73 @ vdr-portal.de) for reporting this error. - Update History: Add credits to Uwe (Licherkette @ vdr-portal.de) for the correction done in 0.1.1 --- HISTORY.LNBshare | 12 ++++++------ config.h | 2 +- device.c | 14 +++++++------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/HISTORY.LNBshare b/HISTORY.LNBshare index d65d214..b5e7833 100644 --- a/HISTORY.LNBshare +++ b/HISTORY.LNBshare @@ -5,7 +5,6 @@ Version for VDR 1.4.3 - configurableLNBshare-VDR_1.4.3.patch from Matthias Lötzke (http://lötzke.de/vdr.html) 2010-04-10: Version for VDR 1.7.14 - - Created HISTORY.LNBshare - Created README.LNBshare - Fixed possible buffer overflow in cMenuSetupLNB::Setup(void) @@ -14,27 +13,28 @@ Version for VDR 1.4.3 - Adept to VDR 1.7.14. Support the new diseqc feature introduced with VDR 1.7.13: 'Added device definitions to the diseqc.conf file format, so that certain satellite positions can be limited to a given list of devices'. 2010-11-13: - - Fix: Devices sharing same LNB don't switch channel on main channel switch (thanks to hivdr @ vdr-portal.de for reporting the bug and spockele @ vdr-portal.de and hopsi @ vdr-portal.de for testing the correction) - Fix: In LOG, device numbering is now as in VDR: Starting from 1, ... - Fix: Encoding of german umlaut in "DVB-Empfänger %d nutzt LNB Nr" 2010-11-28: - - Fix: Device numbering in message 'LNB or DiSEq conflict with device ...'. - Fix: Numbering of LNBs not using SAT 2010-12-25: Version 0.1.0 for VDR version 1.7.16 - - Rename the patch to include patch version number (vdr-lnb-sharing-0.1.0-1.7.16.patch) - Write patch version number to log file (if logging is switched on). - Adept to VDR 1.7.16 - 2010-02-06 Version 0.1.1 for VDR version 1.7.16 -- Fix: If several DVB devices share one LNB, only the first of these devises will send signals like 22kHz. See README.LNBshare for details +- Fix: If several DVB devices share one LNB, only the first of these devises will send signals like 22kHz. See README.LNBshare for details. + Thanks to Uwe (Licherkette @ vdr-portal.de) for finding and analyzing the error and testing the correction. - 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? + +2010-02-16 Version 0.1.3 for VDR version 1.7.16 +- Fix an error that can occur if devices are explizitly specified (-D or --device) during start of VDR. Thanks to Lars (mini73 @ vdr-portal.de) for reporting this error. + diff --git a/config.h b/config.h index 05ebdba..bbb62a6 100644 --- a/config.h +++ b/config.h @@ -293,7 +293,7 @@ public: int EmergencyExit; //ML - #define LNB_SHARING_VERSION "0.1.2" + #define LNB_SHARING_VERSION "0.1.3" 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/device.c b/device.c index c0f7e41..a3cecf9 100644 --- a/device.c +++ b/device.c @@ -155,9 +155,9 @@ void cDevice::SetLnbNr(void) bool cDevice::IsLnbSendSignals(void) { - for (int i = 0; i < cardIndex; i++) { + for (int i = 0; device[i] != this && i < numDevices; i++) { if (device[i]->IsShareLnb(this) ) { - isyslog("Device %d: will not send any signal (like 22kHz) to LNB as device %d will do this", cardIndex+1, i+1); + isyslog("Device %d: will not send any signal (like 22kHz) to LNB as device %d will do this", cardIndex+1, device[i]->cardIndex + 1); return false; } } @@ -731,13 +731,13 @@ cDevice *cDevice::GetBadDevice(const cChannel *Channel) if (this != device[i] && device[i]->IsShareLnb(this) && device[i]->IsLnbConflict(Channel) ) { // there is a conflict between device[i] and 'this' if we tune this to Channel if (Setup.VerboseLNBlog) { - isyslog("LNB %d: Device check for channel %d on device %d. LNB or DiSEq conflict with device %d", LnbNr(), Channel->Number(), this->DeviceNumber() + 1, i + 1); + isyslog("LNB %d: Device check for channel %d on device %d. LNB or DiSEq conflict with device %d", LnbNr(), Channel->Number(), this->cardIndex + 1, device[i]->cardIndex + 1); } return device[i]; } } if (Setup.VerboseLNBlog) { - isyslog("LNB %d: Device check for channel %d on device %d. OK", LnbNr(), Channel->Number(), this->DeviceNumber() + 1); + isyslog("LNB %d: Device check for channel %d on device %d. OK", LnbNr(), Channel->Number(), this->cardIndex + 1); } return NULL; } @@ -752,15 +752,15 @@ int cDevice::GetMaxBadPriority(const cChannel *Channel) const if (this != device[i] && device[i]->IsShareLnb(this) && device[i]->IsLnbConflict(Channel) ) { // there is a conflict between device[i] and 'this' if we tune this to Channel if (Setup.VerboseLNBlog) { - isyslog("LNB %d: Conflict for device %d, priority of conflicting device: %d", LnbNr(), i + 1, device[i]->Priority()); + isyslog("LNB %d: Conflict for device %d, priority of conflicting device: %d", LnbNr(), device[i]->cardIndex + 1, device[i]->Priority()); } if (device[i]->Receiving() && device[i]->Priority() > maxBadPriority) maxBadPriority = device[i]->Priority(); - if (i == ActualDevice()->CardIndex() && maxBadPriority < -1 ) maxBadPriority = -1; + if (device[i] == ActualDevice() && maxBadPriority < -1 ) maxBadPriority = -1; } } if (Setup.VerboseLNBlog) { - isyslog("LNB %d: Request for channel %d on device %d. MaxBadPriority is %d", LnbNr(), Channel->Number(), this->DeviceNumber() + 1, maxBadPriority); + isyslog("LNB %d: Request for channel %d on device %d. MaxBadPriority is %d", LnbNr(), Channel->Number(), this->cardIndex + 1, maxBadPriority); } return maxBadPriority; } -- cgit v1.2.3