You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.4 KiB
110 lines
3.4 KiB
From d5f3f9853d87c319c33ade71811c225db11855f7 Mon Sep 17 00:00:00 2001
|
|
From: Mathias Hasselmann <mathias@openismus.com>
|
|
Date: Wed, 13 Feb 2008 21:23:43 +0100
|
|
Subject: Add --resume switch to irrecord.
|
|
|
|
This switch asks irrecord to take hardware parameters from the provided
|
|
template file, instead of trying to interactively discover them.
|
|
|
|
This change is needed for gnome-lirc-properties to allow it having a
|
|
self-contained key-code learning mode, that's consistent with
|
|
gnome-keybinding-properties.
|
|
|
|
The 'remotes==NULL' check for LIRC_MODE_MODE2 seems to indicate, that its
|
|
author had a similar behaviour in mind. Still I prefer having that switch,
|
|
instead of silently switching to --resume behaviour when a templates file
|
|
was found, for backwards compability and for being able to detect that
|
|
feature.
|
|
---
|
|
daemons/irrecord.c | 17 ++++++++++++-----
|
|
1 files changed, 12 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/daemons/irrecord.c b/daemons/irrecord.c
|
|
index df03c7b..a2420a8 100644
|
|
--- a/daemons/irrecord.c
|
|
+++ b/daemons/irrecord.c
|
|
@@ -192,6 +192,7 @@ int main(int argc,char **argv)
|
|
lirc_t min_remaining_gap, max_remaining_gap;
|
|
int force;
|
|
int retries;
|
|
+ int resume;
|
|
struct ir_remote *remotes=NULL;
|
|
char *device=NULL;
|
|
#ifdef DEBUG
|
|
@@ -200,6 +201,7 @@ int main(int argc,char **argv)
|
|
|
|
progname=argv[0];
|
|
force=0;
|
|
+ resume=0;
|
|
hw_choose_driver(NULL);
|
|
while(1)
|
|
{
|
|
@@ -211,6 +213,7 @@ int main(int argc,char **argv)
|
|
{"device",required_argument,NULL,'d'},
|
|
{"driver",required_argument,NULL,'H'},
|
|
{"force",no_argument,NULL,'f'},
|
|
+ {"resume",no_argument,NULL,'r'},
|
|
#ifdef DEBUG
|
|
{"pre",no_argument,NULL,'p'},
|
|
{"post",no_argument,NULL,'P'},
|
|
@@ -221,9 +224,9 @@ int main(int argc,char **argv)
|
|
{0, 0, 0, 0}
|
|
};
|
|
#ifdef DEBUG
|
|
- c = getopt_long(argc,argv,"hvd:H:fpPtiT",long_options,NULL);
|
|
+ c = getopt_long(argc,argv,"hvd:H:frpPtiT",long_options,NULL);
|
|
#else
|
|
- c = getopt_long(argc,argv,"hvd:H:f",long_options,NULL);
|
|
+ c = getopt_long(argc,argv,"hvd:H:fr",long_options,NULL);
|
|
#endif
|
|
if(c==-1)
|
|
break;
|
|
@@ -234,6 +237,7 @@ int main(int argc,char **argv)
|
|
printf("\t -h --help\t\tdisplay this message\n");
|
|
printf("\t -v --version\t\tdisplay version\n");
|
|
printf("\t -f --force\t\tforce raw mode\n");
|
|
+ printf("\t -r --resume\t\tcontinue recording\n");
|
|
printf("\t -H --driver=driver\tuse given driver\n");
|
|
printf("\t -d --device=device\tread from given device\n");
|
|
exit(EXIT_SUCCESS);
|
|
@@ -254,6 +258,9 @@ int main(int argc,char **argv)
|
|
case 'f':
|
|
force=1;
|
|
break;
|
|
+ case 'r':
|
|
+ resume=1;
|
|
+ break;
|
|
#ifdef DEBUG
|
|
case 'p':
|
|
get_pre=1;
|
|
@@ -460,7 +467,7 @@ int main(int argc,char **argv)
|
|
switch(hw.rec_mode)
|
|
{
|
|
case LIRC_MODE_MODE2:
|
|
- if(remotes==NULL && !get_lengths(&remote,force))
|
|
+ if((!remotes || !resume) && !get_lengths(&remote,force))
|
|
{
|
|
if(remote.gap==0)
|
|
{
|
|
@@ -494,7 +501,7 @@ int main(int argc,char **argv)
|
|
case LIRC_MODE_LIRCCODE:
|
|
if(hw.rec_mode==LIRC_MODE_CODE) remote.bits=CHAR_BIT;
|
|
else remote.bits=hw.code_length;
|
|
- if(!get_gap_length(&remote))
|
|
+ if((!remotes || !resume) && !get_gap_length(&remote))
|
|
{
|
|
fprintf(stderr,"%s: gap not found,"
|
|
" can't continue\n",progname);
|
|
@@ -767,7 +774,7 @@ int main(int argc,char **argv)
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
|
|
- if(!has_toggle_bit_mask(remotes))
|
|
+ if((!remotes || !resume) && !has_toggle_bit_mask(remotes))
|
|
{
|
|
get_toggle_bit_mask(remotes);
|
|
}
|
|
--
|
|
1.5.3.7
|
|
|