From d5f3f9853d87c319c33ade71811c225db11855f7 Mon Sep 17 00:00:00 2001 From: Mathias Hasselmann 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