mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-18 04:22:15 +02:00
util/spkmodem-decode: split up handle_audio()
this enables the separated code to have reduced indentation Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
@@ -216,6 +216,7 @@ static const char *argv0;
|
|||||||
|
|
||||||
static int host_is_big_endian(void);
|
static int host_is_big_endian(void);
|
||||||
static void handle_audio(struct decoder_state *st);
|
static void handle_audio(struct decoder_state *st);
|
||||||
|
static void collect_separator_tone(struct decoder_state *st);
|
||||||
static int valid_signal(struct decoder_state *st);
|
static int valid_signal(struct decoder_state *st);
|
||||||
static void decode_pulse(struct decoder_state *st);
|
static void decode_pulse(struct decoder_state *st);
|
||||||
static void auto_detect_tone(struct decoder_state *st);
|
static void auto_detect_tone(struct decoder_state *st);
|
||||||
@@ -296,7 +297,6 @@ host_is_big_endian(void)
|
|||||||
static void
|
static void
|
||||||
handle_audio(struct decoder_state *st)
|
handle_audio(struct decoder_state *st)
|
||||||
{
|
{
|
||||||
int avg;
|
|
||||||
int sample;
|
int sample;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -306,32 +306,7 @@ handle_audio(struct decoder_state *st)
|
|||||||
if (st->sample_count >= (3 * SAMPLES_PER_FRAME))
|
if (st->sample_count >= (3 * SAMPLES_PER_FRAME))
|
||||||
reset_char(st);
|
reset_char(st);
|
||||||
|
|
||||||
if (!valid_signal(st)) {
|
collect_separator_tone(st);
|
||||||
|
|
||||||
/*
|
|
||||||
* collect separator tone statistics
|
|
||||||
* (and auto-adjust tolerances)
|
|
||||||
*/
|
|
||||||
if (st->sep_samples < 50 && st->freq_separator > 0) {
|
|
||||||
st->sep_sum += st->freq_separator;
|
|
||||||
st->sep_samples++;
|
|
||||||
|
|
||||||
if (st->sep_samples == 50) {
|
|
||||||
avg = st->sep_sum / st->sep_samples;
|
|
||||||
|
|
||||||
/* plus or minus 3 pulse window */
|
|
||||||
st->sep_min = avg - SEP_TOLERANCE_PULSES;
|
|
||||||
st->sep_max = avg + SEP_TOLERANCE_PULSES;
|
|
||||||
|
|
||||||
if (st->debug)
|
|
||||||
printf("separator calibrated: %dHz\n",
|
|
||||||
avg * FRAME_RATE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
decode_pulse(st);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (set_ascii_bit(st) < 0)
|
if (set_ascii_bit(st) < 0)
|
||||||
print_char(st);
|
print_char(st);
|
||||||
@@ -341,6 +316,44 @@ handle_audio(struct decoder_state *st)
|
|||||||
decode_pulse(st);
|
decode_pulse(st);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* collect separator tone statistics
|
||||||
|
* (and auto-adjust tolerances)
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
collect_separator_tone(struct decoder_state *st)
|
||||||
|
{
|
||||||
|
int avg;
|
||||||
|
|
||||||
|
if (valid_signal(st))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (st->sep_samples >= 50 && st->freq_separator <= 0) {
|
||||||
|
decode_pulse(st);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
st->sep_sum += st->freq_separator;
|
||||||
|
st->sep_samples++;
|
||||||
|
|
||||||
|
if (st->sep_samples != 50) {
|
||||||
|
decode_pulse(st);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
avg = st->sep_sum / st->sep_samples;
|
||||||
|
|
||||||
|
/* plus or minus pulse window */
|
||||||
|
st->sep_min = avg - SEP_TOLERANCE_PULSES;
|
||||||
|
st->sep_max = avg + SEP_TOLERANCE_PULSES;
|
||||||
|
|
||||||
|
if (st->debug)
|
||||||
|
printf("separator calibrated: %dHz\n",
|
||||||
|
avg * FRAME_RATE);
|
||||||
|
|
||||||
|
decode_pulse(st);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Verify that the observed pulse densities fall within the
|
* Verify that the observed pulse densities fall within the
|
||||||
* expected ranges for spkmodem tones. This prevents random noise
|
* expected ranges for spkmodem tones. This prevents random noise
|
||||||
|
|||||||
Reference in New Issue
Block a user