1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

The LIRC and RCU remote control no longer try to learn keys in case of errors during startup

This commit is contained in:
Klaus Schmidinger 2003-04-12 14:37:57 +02:00
parent bd23375248
commit f20648eab2
9 changed files with 49 additions and 20 deletions

View File

@ -581,6 +581,8 @@ Malcolm Caldwell <malcolm.caldwell@ntu.edu.au>
Ludwig Nussel <ludwig.nussel@web.de> Ludwig Nussel <ludwig.nussel@web.de>
for making the LIRC thread avoid high CPU load in case the connection to LIRC gets lost 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 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> Thomas Koch <tom@harhar.net>
for his support in keeping the Premiere World channels up to date in 'channels.conf' for his support in keeping the Premiere World channels up to date in 'channels.conf'

View File

@ -2028,3 +2028,6 @@ Video Disk Recorder Revision History
- Updated 'channels.conf.cable' (thanks to Stefan Hußfeldt). - Updated 'channels.conf.cable' (thanks to Stefan Hußfeldt).
- The 'epg.data' file is now read after all plugins have been started (thanks - The 'epg.data' file is now read after all plugins have been started (thanks
to Sascha Volkenandt). 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.

View File

@ -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 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. structures and allows it to hook itself into specific areas to perform special actions.
<p> <p>
<!--X1.1.13--><table width=100%><tr><td bgcolor=#0000AA>&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.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%>
Important modifications introduced in version 1.1.14 are marked like this. Important modifications introduced in version 1.1.14 are marked like this.
<!--X1.1.14--></td></tr></table> <!--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. Important modifications introduced in version 1.1.15 are marked like this.
<!--X1.1.15--></td></tr></table> <!--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. Important modifications introduced in version 1.1.17 are marked like this.
<!--X1.1.17--></td></tr></table> <!--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> <hr>
<h1>Table Of Contents</h1> <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 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> <p><table><tr><td bgcolor=#F0F0F0><pre><br>
virtual cOsdObject *MainMenuAction(void); virtual cOsdObject *MainMenuAction(void);
</pre></td></tr></table><p> </pre></td></tr></table><p>
@ -1011,7 +1011,6 @@ bool DevicePoll(cPoller &amp;Poller, int TimeoutMs = 0);
</pre></td></tr></table><p> </pre></td></tr></table><p>
to determine whether the device is ready for further data. 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> <p>
If the player can provide more than a single audio track, it can implement the If the player can provide more than a single audio track, it can implement the
following functions to make them available: following functions to make them available:
@ -1022,9 +1021,8 @@ virtual const char **GetAudioTracks(int *CurrentTrack = NULL);
virtual void SetAudioTrack(int Index); virtual void SetAudioTrack(int Index);
</pre></td></tr></table><p> </pre></td></tr></table><p>
<!--X1.1.13--></td></tr></table>
<p> <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, If there is an additional audio track that has to be replayed with external hardware,
the player shall call its member function 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 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, this device can provide the requested source or channel and whether tuning to it was successful,
repectively. repectively.
<!--X1.1.13--><table width=100%><tr><td bgcolor=#0000AA>&nbsp;</td><td width=100%>
<p> <p>
<b>Audio selection</b> <b>Audio selection</b>
<p> <p>
@ -1273,7 +1270,6 @@ virtual const char **GetAudioTracksDevice(int *CurrentTrack = NULL) const;
virtual void SetAudioTrackDevice(int Index); virtual void SetAudioTrackDevice(int Index);
</pre></td></tr></table><p> </pre></td></tr></table><p>
<!--X1.1.13--></td></tr></table>
<p> <p>
<b>Recording</b> <b>Recording</b>
<p> <p>
@ -1307,7 +1303,7 @@ The functions to implement replaying capabilites are
<p><table><tr><td bgcolor=#F0F0F0><pre><br> <p><table><tr><td bgcolor=#F0F0F0><pre><br>
virtual bool HasDecoder(void) const; 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; virtual bool CanReplay(void) const;
<!--X1.1.14--></td></tr></table> <!--X1.1.14--></td></tr></table>
virtual bool SetPlayMode(ePlayMode PlayMode); 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> important that the devices are created on the heap, using the <tt>new</tt>
operator! 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> <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> <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 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>. member variables, you should do so before calling <tt>Start()</tt>.
<p> <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 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>, 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 in which you should take all necessary steps to make sure your remote control

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "interface.h"
@ -411,6 +411,10 @@ void cInterface::QueryKeys(cRemote *Remote)
void cInterface::LearnKeys(void) void cInterface::LearnKeys(void)
{ {
for (cRemote *Remote = Remotes.First(); Remote; Remote = Remotes.Next(Remote)) { 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()); bool known = Keys.KnowsRemote(Remote->Name());
dsyslog("remote control %s - %s", Remote->Name(), known ? "keys known" : "learning keys"); dsyslog("remote control %s - %s", Remote->Name(), known ? "keys known" : "learning keys");
if (!known) { if (!known) {

7
lirc.c
View File

@ -6,7 +6,7 @@
* *
* LIRC support added by Carsten Koch <Carsten.Koch@icem.de> 2000-06-16. * 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" #include "lirc.h"
@ -41,6 +41,11 @@ cLircRemote::~cLircRemote()
Cancel(); Cancel();
} }
bool cLircRemote::Ready(void)
{
return f >= 0;
}
void cLircRemote::Action(void) void cLircRemote::Action(void)
{ {
dsyslog("LIRC remote control thread started (pid=%d)", getpid()); dsyslog("LIRC remote control thread started (pid=%d)", getpid());

3
lirc.h
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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 #ifndef __LIRC_H
@ -21,6 +21,7 @@ private:
public: public:
cLircRemote(char *DeviceName); cLircRemote(char *DeviceName);
virtual ~cLircRemote(); virtual ~cLircRemote();
virtual bool Ready(void);
}; };
#endif //__LIRC_H #endif //__LIRC_H

7
rcu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "rcu.h"
@ -55,6 +55,11 @@ cRcuRemote::~cRcuRemote()
Cancel(); Cancel();
} }
bool cRcuRemote::Ready(void)
{
return f >= 0;
}
bool cRcuRemote::Initialize(void) bool cRcuRemote::Initialize(void)
{ {
if (f >= 0) { if (f >= 0) {

3
rcu.h
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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 #ifndef __RCU_H
@ -39,6 +39,7 @@ private:
public: public:
cRcuRemote(char *DeviceName); cRcuRemote(char *DeviceName);
virtual ~cRcuRemote(); virtual ~cRcuRemote();
virtual bool Ready(void);
virtual bool Initialize(void); virtual bool Initialize(void);
}; };

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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 #ifndef __REMOTE_H
@ -37,6 +37,7 @@ protected:
bool Put(const char *Code, bool Repeat = false, bool Release = false); bool Put(const char *Code, bool Repeat = false, bool Release = false);
public: public:
virtual ~cRemote(); virtual ~cRemote();
virtual bool Ready(void) { return true; }
virtual bool Initialize(void) { return true; } virtual bool Initialize(void) { return true; }
const char *Name(void) { return name; } const char *Name(void) { return name; }
static void SetLearning(cRemote *Learning) { learning = Learning; } static void SetLearning(cRemote *Learning) { learning = Learning; }