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:
parent
bd23375248
commit
f20648eab2
@ -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'
|
||||||
|
3
HISTORY
3
HISTORY
@ -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.
|
||||||
|
35
PLUGINS.html
35
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
|
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> </td><td width=100%>
|
<!--X1.1.14--><table width=100%><tr><td bgcolor=#0000AA> </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> </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> </td><td width=100%>
|
<!--X1.1.15--><table width=100%><tr><td bgcolor=#00AA00> </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> </td><td width=100%>
|
<!--X1.1.17--><table width=100%><tr><td bgcolor=#AA0000> </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> </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> </td><td width=100%>
|
<!--X1.1.17--><table width=100%><tr><td bgcolor=#AA0000> </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 &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> </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> </td><td width=100%>
|
<!--X1.1.15--><table width=100%><tr><td bgcolor=#00AA00> </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> </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> </td><td width=100%>
|
<!--X1.1.14--><table width=100%><tr><td bgcolor=#0000AA> </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> </td><td width=100%>
|
<!--X1.1.15--><table width=100%><tr><td bgcolor=#00AA00> </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> </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
|
||||||
|
@ -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
7
lirc.c
@ -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
3
lirc.h
@ -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
7
rcu.c
@ -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
3
rcu.h
@ -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);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
3
remote.h
3
remote.h
@ -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; }
|
||||||
|
Loading…
Reference in New Issue
Block a user