I think the problem is YaVDR.
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.0 +0100
+++ 1.7.22a//device.h 2011-12-05 21:17:36.77513 +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.0 +0100
+++ 1.7.22a/dvbdevice.c 2011-12-08 22:13:44.04113 +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.0 +0100
+++ 1.7.22a//dvbdevice.h 2011-12-05 21:17:36.75513 +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@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr