mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Dropped dynamic repeat function
This commit is contained in:
parent
735093b8fa
commit
e3fe42608d
4
osm.c
4
osm.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.cadsoft.de/people/kls/vdr
|
* The project's page is at http://www.cadsoft.de/people/kls/vdr
|
||||||
*
|
*
|
||||||
* $Id: osm.c 1.3 2000/04/15 14:04:21 kls Exp $
|
* $Id: osm.c 1.4 2000/04/16 13:54:10 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
@ -144,7 +144,7 @@ int main(int argc, char *argv[])
|
|||||||
DvbApi.StopRecord();
|
DvbApi.StopRecord();
|
||||||
DvbApi.StopReplay();
|
DvbApi.StopReplay();
|
||||||
//TODO kill any remaining sub-processes!
|
//TODO kill any remaining sub-processes!
|
||||||
isyslog(LOG_INFO, "exiting", Interrupted);
|
isyslog(LOG_INFO, "exiting");
|
||||||
closelog();
|
closelog();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
20
remote.c
20
remote.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'osm.c' for copyright information and
|
* See the main source file 'osm.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: remote.c 1.2 2000/04/15 16:00:51 kls Exp $
|
* $Id: remote.c 1.3 2000/04/16 13:54:16 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "remote.h"
|
#include "remote.h"
|
||||||
@ -17,6 +17,9 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
|
#define REPEATLIMIT 100 // ms
|
||||||
|
#define REPEATDELAY 250 // ms
|
||||||
|
|
||||||
cRcIo::cRcIo(char *DeviceName)
|
cRcIo::cRcIo(char *DeviceName)
|
||||||
{
|
{
|
||||||
dp = 0;
|
dp = 0;
|
||||||
@ -25,7 +28,6 @@ cRcIo::cRcIo(char *DeviceName)
|
|||||||
address = 0xFFFF;
|
address = 0xFFFF;
|
||||||
t = 0;
|
t = 0;
|
||||||
firstTime = lastTime = 0;
|
firstTime = lastTime = 0;
|
||||||
minDelta = 0;
|
|
||||||
lastCommand = 0;
|
lastCommand = 0;
|
||||||
if ((f = open(DeviceName, O_RDWR | O_NONBLOCK)) >= 0) {
|
if ((f = open(DeviceName, O_RDWR | O_NONBLOCK)) >= 0) {
|
||||||
struct termios t;
|
struct termios t;
|
||||||
@ -35,8 +37,11 @@ cRcIo::cRcIo(char *DeviceName)
|
|||||||
if (tcsetattr(f, TCSAFLUSH, &t) == 0)
|
if (tcsetattr(f, TCSAFLUSH, &t) == 0)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
LOG_ERROR_STR(DeviceName);
|
||||||
close(f);
|
close(f);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
LOG_ERROR_STR(DeviceName);
|
||||||
f = -1;
|
f = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +53,7 @@ cRcIo::~cRcIo()
|
|||||||
|
|
||||||
int cRcIo::ReceiveByte(bool Wait)
|
int cRcIo::ReceiveByte(bool Wait)
|
||||||
{
|
{
|
||||||
// Returns the byte if one was received within 1 second, -1 otherwise
|
// Returns the byte if one was received within a timeout, -1 otherwise
|
||||||
if (f >= 0) {
|
if (f >= 0) {
|
||||||
fd_set set;
|
fd_set set;
|
||||||
struct timeval timeout;
|
struct timeval timeout;
|
||||||
@ -112,7 +117,6 @@ bool cRcIo::SetCode(unsigned char Code, unsigned short Address)
|
|||||||
{
|
{
|
||||||
code = Code;
|
code = Code;
|
||||||
address = Address;
|
address = Address;
|
||||||
minDelta = 200;
|
|
||||||
return SendCommand(code);
|
return SendCommand(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,12 +161,10 @@ bool cRcIo::GetCommand(unsigned int *Command, unsigned short *Address)
|
|||||||
// let's have a timeout to avoid getting overrun by commands
|
// let's have a timeout to avoid getting overrun by commands
|
||||||
int now = time_ms();
|
int now = time_ms();
|
||||||
int delta = now - lastTime;
|
int delta = now - lastTime;
|
||||||
if (delta < minDelta)
|
|
||||||
minDelta = delta; // dynamically adjust to the smallest delta
|
|
||||||
lastTime = now;
|
lastTime = now;
|
||||||
if (delta < minDelta * 1.3) { // if commands come in rapidly...
|
if (delta < REPEATLIMIT) { // if commands come in rapidly...
|
||||||
if (now - firstTime < 250)
|
if (now - firstTime < REPEATDELAY)
|
||||||
return false; // ...repeat function kicks in after 250ms
|
return false; // ...repeat function kicks in after a short delay
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
4
remote.h
4
remote.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'osm.c' for copyright information and
|
* See the main source file 'osm.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: remote.h 1.1 2000/02/19 13:36:48 kls Exp $
|
* $Id: remote.h 1.2 2000/04/16 13:53:50 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __REMOTE_H
|
#ifndef __REMOTE_H
|
||||||
@ -19,7 +19,7 @@ private:
|
|||||||
unsigned char dp, code, mode;
|
unsigned char dp, code, mode;
|
||||||
unsigned short address;
|
unsigned short address;
|
||||||
time_t t;
|
time_t t;
|
||||||
int firstTime, lastTime, minDelta;
|
int firstTime, lastTime;
|
||||||
unsigned int lastCommand;
|
unsigned int lastCommand;
|
||||||
bool SendCommand(unsigned char Cmd);
|
bool SendCommand(unsigned char Cmd);
|
||||||
int ReceiveByte(bool Wait = true);
|
int ReceiveByte(bool Wait = true);
|
||||||
|
3
tools.h
3
tools.h
@ -4,12 +4,13 @@
|
|||||||
* See the main source file 'osm.c' for copyright information and
|
* See the main source file 'osm.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: tools.h 1.3 2000/04/15 15:09:47 kls Exp $
|
* $Id: tools.h 1.4 2000/04/16 13:54:04 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TOOLS_H
|
#ifndef __TOOLS_H
|
||||||
#define __TOOLS_H
|
#define __TOOLS_H
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user