summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2003-04-12 14:37:57 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2003-04-12 14:37:57 +0200
commitf20648eab26f8efee41642f198da3d35b2d408c1 (patch)
tree411516a15e64095a26b46515364e3ca864db99fb
parentbd233752488dc28a81137e45d177f77177ba10e2 (diff)
downloadvdr-f20648eab26f8efee41642f198da3d35b2d408c1.tar.gz
vdr-f20648eab26f8efee41642f198da3d35b2d408c1.tar.bz2
The LIRC and RCU remote control no longer try to learn keys in case of errors during startup
-rw-r--r--CONTRIBUTORS2
-rw-r--r--HISTORY3
-rw-r--r--PLUGINS.html35
-rw-r--r--interface.c6
-rw-r--r--lirc.c7
-rw-r--r--lirc.h3
-rw-r--r--rcu.c7
-rw-r--r--rcu.h3
-rw-r--r--remote.h3
9 files changed, 49 insertions, 20 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index d8b87945..f050d337 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -581,6 +581,8 @@ Malcolm Caldwell <malcolm.caldwell@ntu.edu.au>
Ludwig Nussel <ludwig.nussel@web.de>
for making the LIRC thread avoid high CPU load in case the connection to LIRC gets lost
for fixing handling repeat function with LIRC
+ for reporting a problem with the LIRC remote control trying to learn keys even if it
+ couldn't connect to the LIRC daemon
Thomas Koch <tom@harhar.net>
for his support in keeping the Premiere World channels up to date in 'channels.conf'
diff --git a/HISTORY b/HISTORY
index 2d76387f..3ffae833 100644
--- a/HISTORY
+++ b/HISTORY
@@ -2028,3 +2028,6 @@ Video Disk Recorder Revision History
- Updated 'channels.conf.cable' (thanks to Stefan Hußfeldt).
- The 'epg.data' file is now read after all plugins have been started (thanks
to Sascha Volkenandt).
+- The LIRC remote control no longer tries to learn keys if it can't connect to
+ the LIRC daemon (thanks to Ludwig Nussel for reporting this one). The same
+ applies to the RCU remote control in case of errors during startup.
diff --git a/PLUGINS.html b/PLUGINS.html
index fe651303..d6c37760 100644
--- a/PLUGINS.html
+++ b/PLUGINS.html
@@ -21,18 +21,18 @@ VDR program and present itself to the user.
The <i>internal</i> interface provides the plugin code access to VDR's internal data
structures and allows it to hook itself into specific areas to perform special actions.
<p>
-<!--X1.1.13--><table width=100%><tr><td bgcolor=#0000AA>&nbsp;</td><td width=100%>
-Important modifications introduced in version 1.1.13 are marked like this.
-<!--X1.1.13--></td></tr></table>
-<!--X1.1.14--><table width=100%><tr><td bgcolor=#00AA00>&nbsp;</td><td width=100%>
+<!--X1.1.14--><table width=100%><tr><td bgcolor=#0000AA>&nbsp;</td><td width=100%>
Important modifications introduced in version 1.1.14 are marked like this.
<!--X1.1.14--></td></tr></table>
-<!--X1.1.15--><table width=100%><tr><td bgcolor=#AA0000>&nbsp;</td><td width=100%>
+<!--X1.1.15--><table width=100%><tr><td bgcolor=#00AA00>&nbsp;</td><td width=100%>
Important modifications introduced in version 1.1.15 are marked like this.
<!--X1.1.15--></td></tr></table>
-<!--X1.1.17--><table width=100%><tr><td bgcolor=#FF0000>&nbsp;</td><td width=100%>
+<!--X1.1.17--><table width=100%><tr><td bgcolor=#AA0000>&nbsp;</td><td width=100%>
Important modifications introduced in version 1.1.17 are marked like this.
<!--X1.1.17--></td></tr></table>
+<!--X1.1.27--><table width=100%><tr><td bgcolor=#FF0000>&nbsp;</td><td width=100%>
+Important modifications introduced in version 1.1.27 are marked like this.
+<!--X1.1.27--></td></tr></table>
<hr>
<h1>Table Of Contents</h1>
@@ -506,7 +506,7 @@ in the call to VDR.
If the user selects the main menu entry of a plugin, VDR calls the function
-<!--X1.1.17--><table width=100%><tr><td bgcolor=#FF0000>&nbsp;</td><td width=100%>
+<!--X1.1.17--><table width=100%><tr><td bgcolor=#AA0000>&nbsp;</td><td width=100%>
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
virtual cOsdObject *MainMenuAction(void);
</pre></td></tr></table><p>
@@ -1011,7 +1011,6 @@ bool DevicePoll(cPoller &amp;Poller, int TimeoutMs = 0);
</pre></td></tr></table><p>
to determine whether the device is ready for further data.
-<!--X1.1.13--><table width=100%><tr><td bgcolor=#0000AA>&nbsp;</td><td width=100%>
<p>
If the player can provide more than a single audio track, it can implement the
following functions to make them available:
@@ -1022,9 +1021,8 @@ virtual const char **GetAudioTracks(int *CurrentTrack = NULL);
virtual void SetAudioTrack(int Index);
</pre></td></tr></table><p>
-<!--X1.1.13--></td></tr></table>
<p>
-<!--X1.1.15--><table width=100%><tr><td bgcolor=#AA0000>&nbsp;</td><td width=100%>
+<!--X1.1.15--><table width=100%><tr><td bgcolor=#00AA00>&nbsp;</td><td width=100%>
If there is an additional audio track that has to be replayed with external hardware,
the player shall call its member function
@@ -1260,7 +1258,6 @@ virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
These functions will be called with the desired source or channel and shall return whether
this device can provide the requested source or channel and whether tuning to it was successful,
repectively.
-<!--X1.1.13--><table width=100%><tr><td bgcolor=#0000AA>&nbsp;</td><td width=100%>
<p>
<b>Audio selection</b>
<p>
@@ -1273,7 +1270,6 @@ virtual const char **GetAudioTracksDevice(int *CurrentTrack = NULL) const;
virtual void SetAudioTrackDevice(int Index);
</pre></td></tr></table><p>
-<!--X1.1.13--></td></tr></table>
<p>
<b>Recording</b>
<p>
@@ -1307,7 +1303,7 @@ The functions to implement replaying capabilites are
<p><table><tr><td bgcolor=#F0F0F0><pre><br>
virtual bool HasDecoder(void) const;
-<!--X1.1.14--><table width=100%><tr><td bgcolor=#00AA00>&nbsp;</td><td width=100%>
+<!--X1.1.14--><table width=100%><tr><td bgcolor=#0000AA>&nbsp;</td><td width=100%>
virtual bool CanReplay(void) const;
<!--X1.1.14--></td></tr></table>
virtual bool SetPlayMode(ePlayMode PlayMode);
@@ -1369,7 +1365,7 @@ shut down (delete) all devices when the program terminates. It is therefore
important that the devices are created on the heap, using the <tt>new</tt>
operator!
-<!--X1.1.15--><table width=100%><tr><td bgcolor=#AA0000>&nbsp;</td><td width=100%>
+<!--X1.1.15--><table width=100%><tr><td bgcolor=#00AA00>&nbsp;</td><td width=100%>
<a name="Dolby Digital"><hr><h2>Dolby Digital</h2>
<center><i><b>"The stereo effect may only be experienced if stereo equipment is used!"</b></i></center><p>
@@ -1480,6 +1476,17 @@ the incoming data (by calling your <tt>Action()</tt> function).
In case you need to do any other setup steps, like opening a file or initializing
member variables, you should do so before calling <tt>Start()</tt>.
<p>
+<!--X1.1.27--><table width=100%><tr><td bgcolor=#FF0000>&nbsp;</td><td width=100%>
+If your remote control for some reason can't work (maybe because it was unable to
+open some file handle it requires) it can implement the virtual function
+
+<p><table><tr><td bgcolor=#F0F0F0><pre><br>
+virtual bool Ready(void);
+</pre></td></tr></table><p>
+
+and have it return <i>false</i>. In that case VDR will not try to learn keys from
+that remote control.
+<!--X1.1.27--></td></tr></table>
VDR will handle everything necessary to learn the key mappings of your remote
control. In order to do so, it will first call the virtual function <tt>Initialize()</tt>,
in which you should take all necessary steps to make sure your remote control
diff --git a/interface.c b/interface.c
index 82b2531e..9245c85f 100644
--- a/interface.c
+++ b/interface.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: interface.c 1.62 2003/04/06 12:47:51 kls Exp $
+ * $Id: interface.c 1.63 2003/04/12 14:17:49 kls Exp $
*/
#include "interface.h"
@@ -411,6 +411,10 @@ void cInterface::QueryKeys(cRemote *Remote)
void cInterface::LearnKeys(void)
{
for (cRemote *Remote = Remotes.First(); Remote; Remote = Remotes.Next(Remote)) {
+ if (!Remote->Ready()) {
+ esyslog("ERROR: remote control %s not ready!", Remote->Name());
+ continue;
+ }
bool known = Keys.KnowsRemote(Remote->Name());
dsyslog("remote control %s - %s", Remote->Name(), known ? "keys known" : "learning keys");
if (!known) {
diff --git a/lirc.c b/lirc.c
index 2c92f6ab..b7f5b936 100644
--- a/lirc.c
+++ b/lirc.c
@@ -6,7 +6,7 @@
*
* LIRC support added by Carsten Koch <Carsten.Koch@icem.de> 2000-06-16.
*
- * $Id: lirc.c 1.3 2003/04/06 15:45:10 kls Exp $
+ * $Id: lirc.c 1.4 2003/04/12 14:37:17 kls Exp $
*/
#include "lirc.h"
@@ -41,6 +41,11 @@ cLircRemote::~cLircRemote()
Cancel();
}
+bool cLircRemote::Ready(void)
+{
+ return f >= 0;
+}
+
void cLircRemote::Action(void)
{
dsyslog("LIRC remote control thread started (pid=%d)", getpid());
diff --git a/lirc.h b/lirc.h
index ff58f315..cd3c780d 100644
--- a/lirc.h
+++ b/lirc.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: lirc.h 1.1 2002/09/28 14:11:04 kls Exp $
+ * $Id: lirc.h 1.2 2003/04/12 14:15:20 kls Exp $
*/
#ifndef __LIRC_H
@@ -21,6 +21,7 @@ private:
public:
cLircRemote(char *DeviceName);
virtual ~cLircRemote();
+ virtual bool Ready(void);
};
#endif //__LIRC_H
diff --git a/rcu.c b/rcu.c
index 4157c0d2..5c76a35c 100644
--- a/rcu.c
+++ b/rcu.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: rcu.c 1.3 2002/12/07 12:22:40 kls Exp $
+ * $Id: rcu.c 1.4 2003/04/12 14:37:13 kls Exp $
*/
#include "rcu.h"
@@ -55,6 +55,11 @@ cRcuRemote::~cRcuRemote()
Cancel();
}
+bool cRcuRemote::Ready(void)
+{
+ return f >= 0;
+}
+
bool cRcuRemote::Initialize(void)
{
if (f >= 0) {
diff --git a/rcu.h b/rcu.h
index d314275d..534ca3da 100644
--- a/rcu.h
+++ b/rcu.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: rcu.h 1.2 2002/12/07 12:21:25 kls Exp $
+ * $Id: rcu.h 1.3 2003/04/12 14:36:09 kls Exp $
*/
#ifndef __RCU_H
@@ -39,6 +39,7 @@ private:
public:
cRcuRemote(char *DeviceName);
virtual ~cRcuRemote();
+ virtual bool Ready(void);
virtual bool Initialize(void);
};
diff --git a/remote.h b/remote.h
index 7908b1db..f26be169 100644
--- a/remote.h
+++ b/remote.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: remote.h 1.24 2002/12/15 15:49:06 kls Exp $
+ * $Id: remote.h 1.25 2003/04/12 14:14:49 kls Exp $
*/
#ifndef __REMOTE_H
@@ -37,6 +37,7 @@ protected:
bool Put(const char *Code, bool Repeat = false, bool Release = false);
public:
virtual ~cRemote();
+ virtual bool Ready(void) { return true; }
virtual bool Initialize(void) { return true; }
const char *Name(void) { return name; }
static void SetLearning(cRemote *Learning) { learning = Learning; }