Rotorng work whit both vdr-1.7.21/22 (whit patch).
There are only same problem with low/no signal!
The old-rotor not compile for me.
kind regards,
Jan23
diff -ruN 1.7.22//device.h 1.7.22a//device.h --- 1.7.22//device.h 2011-12-04 14:38:17.000000000 +0100 +++ 1.7.22a//device.h 2011-12-05 21:17:36.775000013 +0100 @@ -24,6 +24,8 @@ #include "spu.h" #include "thread.h" #include "tools.h" +#include <asm/types.h> +#include <linux/dvb/frontend.h> #define MAXDEVICES 16 // the maximum number of devices in the system #define MAXPIDHANDLES 64 // the maximum number of different PIDs per device @@ -324,7 +325,7 @@ virtual bool HasProgramme(void); ///< Returns true if the device is currently showing any programme to ///< the user, either through replaying or live. - + virtual bool SendDiseqcCmd(dvb_diseqc_master_cmd cmd) {return false;} // PID handle facilities private: diff -ruN 1.7.22/dvbdevice.c 1.7.22a/dvbdevice.c --- 1.7.22/dvbdevice.c 2011-12-03 16:24:27.000000000 +0100 +++ 1.7.22a/dvbdevice.c 2011-12-08 22:13:44.041000013 +0100 @@ -261,6 +261,7 @@ private: static cMutex bondMutex; enum eTunerStatus { tsIdle, tsSet, tsTuned, tsLocked }; + bool SendDiseqc; const cDvbDevice *device; int fd_frontend; int adapter, frontend; @@ -276,6 +277,7 @@ cMutex mutex; cCondVar locked; cCondVar newSet; + dvb_diseqc_master_cmd diseqc_cmd; cDvbTuner *bondedTuner; bool bondedMaster; bool bondedMasterFailed; @@ -297,6 +299,7 @@ uint32_t SubsystemId(void) const { return subsystemId; } bool IsTunedTo(const cChannel *Channel) const; void SetChannel(const cChannel *Channel); + bool SendDiseqcCmd(dvb_diseqc_master_cmd cmd); bool Locked(int TimeoutMs = 0); int GetSignalStrength(void) const; int GetSignalQuality(void) const; @@ -308,6 +311,7 @@ { device = Device; fd_frontend = Fd_Frontend; + SendDiseqc=false; adapter = Adapter; frontend = Frontend; frontendType = FrontendType; @@ -813,6 +817,10 @@ if (GetFrontendStatus(NewStatus)) Status = NewStatus; cMutexLock MutexLock(&mutex); + if (SendDiseqc) { + CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &diseqc_cmd)); + SendDiseqc=false; + } switch (tunerStatus) { case tsIdle: break; @@ -867,6 +875,17 @@ } } +bool cDvbTuner::SendDiseqcCmd(dvb_diseqc_master_cmd cmd) +{ + cMutexLock MutexLock(&mutex); + if ((frontendType!=SYS_DVBS2 && frontendType!=SYS_DVBS) || SendDiseqc) + return false; + diseqc_cmd=cmd; + SendDiseqc=true; + newSet.Broadcast(); + return true; +} + // --- cDvbSourceParam ------------------------------------------------------- class cDvbSourceParam : public cSourceParam { @@ -1415,6 +1434,11 @@ return dvbTuner ? dvbTuner->Locked(TimeoutMs) : false; } +bool cDvbDevice::SendDiseqcCmd(dvb_diseqc_master_cmd cmd) +{ + return dvbTuner->SendDiseqcCmd(cmd); +} + void cDvbDevice::SetTransferModeForDolbyDigital(int Mode) { setTransferModeForDolbyDigital = Mode; diff -ruN 1.7.22//dvbdevice.h 1.7.22a//dvbdevice.h --- 1.7.22//dvbdevice.h 2011-12-04 14:38:17.000000000 +0100 +++ 1.7.22a//dvbdevice.h 2011-12-05 21:17:36.755000013 +0100 @@ -181,6 +181,7 @@ virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView); public: virtual bool HasLock(int TimeoutMs = 0); + virtual bool SendDiseqcCmd(dvb_diseqc_master_cmd cmd); // PID handle facilities
_______________________________________________ vdr mailing list vdr@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr