Rotor / Rotor-NG not working with latest VDR

Message ID CAGWcGj+P5aTn-uJhbHUu3bxUdm+Dbi_+dEhhaUVrmGpWCNQk=Q@mail.gmail.com
State New
Headers

Commit Message

jan med Dec. 21, 2011, 9:12 p.m. UTC
  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
  

Comments

L. Hanisch Dec. 21, 2011, 10:15 p.m. UTC | #1
Hi,

Am 21.12.2011 22:12, schrieb jan med:
> 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.

  That may be. Have you installed the latest updates?
# sudo apt-get update
# sudo apt-get dist-upgrade

  There should at least be an update for vdr-plugin-dynamite.

Regards,
Lars.

>
> kind regards,
>
> Jan23
>
>
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
  

Patch

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