From 777b57dd3a2e8ca9f5656aa69abe64e720a580d3 Mon Sep 17 00:00:00 2001 From: Kamal Mostafa Date: Fri, 15 Jul 2011 20:37:13 -0700 Subject: [PATCH] minimodem: do not do interactive signal handling with --tx --file --- src/minimodem.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/minimodem.c b/src/minimodem.c index b6f0272..9bf8ec9 100644 --- a/src/minimodem.c +++ b/src/minimodem.c @@ -119,6 +119,7 @@ tx_stop_transmit_sighandler( int sig ) */ static void fsk_transmit_stdin( simpleaudio *sa_out, + int tx_interactive, float data_rate, float bfsk_mark_f, float bfsk_space_f, @@ -138,15 +139,17 @@ static void fsk_transmit_stdin( // one-shot struct itimerval itv = { {0, 0}, // it_interval - {0, 1000000/(data_rate+data_rate*0.03) } // it_value + {0, 1000000/(float)(data_rate+data_rate*0.03) } // it_value }; - signal(SIGALRM, tx_stop_transmit_sighandler); + if ( tx_interactive ) + signal(SIGALRM, tx_stop_transmit_sighandler); tx_transmitting = 0; while ( (c = getchar()) != EOF ) { - setitimer(ITIMER_REAL, NULL, NULL); + if ( tx_interactive ) + setitimer(ITIMER_REAL, NULL, NULL); // fprintf(stderr, "", c); unsigned int nwords; @@ -173,9 +176,13 @@ static void fsk_transmit_stdin( bit_nsamples * bfsk_txstopbits); // stop } - setitimer(ITIMER_REAL, &itv, NULL); + if ( tx_interactive ) + setitimer(ITIMER_REAL, &itv, NULL); + } + if ( tx_interactive ) { + setitimer(ITIMER_REAL, NULL, NULL); + signal(SIGALRM, SIG_DFL); } - setitimer(ITIMER_REAL, NULL, NULL); if ( !tx_transmitting ) return; @@ -463,8 +470,10 @@ main( int argc, char*argv[] ) if ( TX_mode ) { simpleaudio *sa_out = NULL; + int tx_interactive = 1; if ( filename ) { + tx_interactive = 0; sa_out = simpleaudio_open_stream_sndfile(SA_STREAM_PLAYBACK, filename); if ( ! sa_out ) @@ -476,7 +485,7 @@ main( int argc, char*argv[] ) if ( ! sa_out ) return 1; - fsk_transmit_stdin(sa_out, + fsk_transmit_stdin(sa_out, tx_interactive, bfsk_data_rate, bfsk_mark_f, bfsk_space_f, bfsk_n_data_bits,