diff options
| author | Leah Rowe <leah@libreboot.org> | 2023-06-13 20:47:17 +0100 | 
|---|---|---|
| committer | Leah Rowe <leah@libreboot.org> | 2023-06-13 20:47:17 +0100 | 
| commit | 5c5c1c64fd29f85644771810820ab912e75bc747 (patch) | |
| tree | aeebd1fd5b89bf7b48143299e6bf009598f869bc | |
| parent | f257eb6f9d866b5ec959106807bcaaee2262adbf (diff) | |
util/spkmodem-recv: cleaner ring buffer handling
make it more obvious that this *is* a ring buffer being
handled, and make it more obvious when checking a pulse
in the next frame
Signed-off-by: Leah Rowe <leah@libreboot.org>
| -rw-r--r-- | util/spkmodem_recv/spkmodem-recv.c | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/util/spkmodem_recv/spkmodem-recv.c b/util/spkmodem_recv/spkmodem-recv.c index aea9ec29..16115bd0 100644 --- a/util/spkmodem_recv/spkmodem-recv.c +++ b/util/spkmodem_recv/spkmodem-recv.c @@ -27,6 +27,7 @@  /* Usage: parec --channels=1 --rate=48000 --format=s16le | ./spkmodem-recv */  #define SAMPLES_PER_FRAME 240 +#define MAX_SAMPLES (2 * SAMPLES_PER_FRAME)  #define FREQ_SEP_MIN 5  #define FREQ_SEP_MAX 15  #define FREQ_DATA_MIN 15 @@ -37,7 +38,7 @@  #define ERR() (errno = errno ? errno : ECANCELED)  #define reset_char() ascii = 0, ascii_bit = 7 -signed short frame[2 * SAMPLES_PER_FRAME], pulse[2 * SAMPLES_PER_FRAME]; +signed short frame[MAX_SAMPLES], pulse[MAX_SAMPLES];  int ringpos, debug, freq_data, freq_separator, sample_count, ascii_bit = 7;  char ascii = 0; @@ -90,17 +91,16 @@ handle_audio(void)  void  fetch_sample(void)  { +	int next_ringpos = (ringpos + SAMPLES_PER_FRAME) % MAX_SAMPLES;  	freq_data -= pulse[ringpos]; -	freq_data += pulse[(ringpos + SAMPLES_PER_FRAME) -	    % (2 * SAMPLES_PER_FRAME)]; -	freq_separator -= pulse[(ringpos + SAMPLES_PER_FRAME) -	    % (2 * SAMPLES_PER_FRAME)]; +	freq_data += pulse[next_ringpos]; +	freq_separator -= pulse[next_ringpos];  	read_frame();  	if ((pulse[ringpos] = (abs(frame[ringpos]) > THRESHOLD) ? 1 : 0))  		++freq_separator;  	++ringpos; -	ringpos %= 2 * SAMPLES_PER_FRAME; +	ringpos %= MAX_SAMPLES;  	++sample_count;  } | 
