minor: Cleanup style for pulse_detect_fsk

This commit is contained in:
Christian W. Zuckschwerdt 2022-09-19 08:57:20 +02:00
parent e3b91622ca
commit aae921c1db
4 changed files with 24 additions and 25 deletions

View file

@ -53,7 +53,7 @@ enum package_types {
PULSE_DATA_FSK = 2,
};
/// state data for pulse_FSK_detect()
/// state data for pulse_detect_fsk_ functions
typedef struct {
unsigned int fsk_pulse_length; ///< Counter for internal FSK pulse detection
enum {
@ -72,7 +72,7 @@ typedef struct {
int16_t minn;
int16_t midd;
int skip_samples;
} pulse_FSK_state_t;
} pulse_detect_fsk_t;
typedef struct pulse_detect pulse_detect_t;

View file

@ -17,9 +17,9 @@
#include <stdint.h>
#include "pulse_detect.h"
void pulse_FSK_detect(int16_t fm_n, pulse_data_t *fsk_pulses, pulse_FSK_state_t *s);
void pulse_FSK_wrap_up(pulse_data_t *fsk_pulses, pulse_FSK_state_t *s);
void pulse_FSK_detect_mm(int16_t fm_n, pulse_data_t *fsk_pulses, pulse_FSK_state_t *s);
void pulse_detect_fsk_classic(pulse_detect_fsk_t *s, int16_t fm_n, pulse_data_t *fsk_pulses);
void pulse_detect_fsk_wrap_up(pulse_detect_fsk_t *s, pulse_data_t *fsk_pulses);
void pulse_detect_fsk_minmax(pulse_detect_fsk_t *s, int16_t fm_n, pulse_data_t *fsk_pulses);
#define FSK_PULSE_DETECT_START 0
enum {

View file

@ -261,7 +261,7 @@ struct pulse_detect {
int verbosity; ///< Debug output verbosity, 0=None, 1=Levels, 2=Histograms
pulse_FSK_state_t FSK_state;
pulse_detect_fsk_t pulse_detect_fsk;
};
pulse_detect_t *pulse_detect_create()
@ -437,10 +437,10 @@ int pulse_detect_package(pulse_detect_t *pulse_detect, int16_t const *envelope_d
fsk_pulses->start_ago = len - s->data_counter;
s->pulse_length = 0;
s->max_pulse = 0;
s->FSK_state = (pulse_FSK_state_t){0};
s->FSK_state.var_test_max = INT16_MIN;
s->FSK_state.var_test_min = INT16_MAX;
s->FSK_state.skip_samples = 40;
s->pulse_detect_fsk = (pulse_detect_fsk_t){0};
s->pulse_detect_fsk.var_test_max = INT16_MIN;
s->pulse_detect_fsk.var_test_min = INT16_MAX;
s->pulse_detect_fsk.skip_samples = 40;
s->ook_state = PD_OOK_STATE_PULSE;
}
else { // We are still idle..
@ -490,9 +490,9 @@ int pulse_detect_package(pulse_detect_t *pulse_detect, int16_t const *envelope_d
// FSK Demodulation
if (pulses->num_pulses == 0) { // Only during first pulse
if (fpdm == FSK_PULSE_DETECT_OLD)
pulse_FSK_detect(fm_data[s->data_counter], fsk_pulses, &s->FSK_state);
pulse_detect_fsk_classic(&s->pulse_detect_fsk, fm_data[s->data_counter], fsk_pulses);
else
pulse_FSK_detect_mm(fm_data[s->data_counter], fsk_pulses, &s->FSK_state);
pulse_detect_fsk_minmax(&s->pulse_detect_fsk, fm_data[s->data_counter], fsk_pulses);
}
break;
case PD_OOK_STATE_GAP_START: // Beginning of gap - it might be a spurious gap
@ -509,10 +509,10 @@ int pulse_detect_package(pulse_detect_t *pulse_detect, int16_t const *envelope_d
if (fsk_pulses->num_pulses > PD_MIN_PULSES) {
// Store last pulse/gap
if (fpdm == FSK_PULSE_DETECT_OLD)
pulse_FSK_wrap_up(fsk_pulses, &s->FSK_state);
pulse_detect_fsk_wrap_up(&s->pulse_detect_fsk, fsk_pulses);
// Store estimates
fsk_pulses->fsk_f1_est = s->FSK_state.fm_f1_est;
fsk_pulses->fsk_f2_est = s->FSK_state.fm_f2_est;
fsk_pulses->fsk_f1_est = s->pulse_detect_fsk.fm_f1_est;
fsk_pulses->fsk_f2_est = s->pulse_detect_fsk.fm_f2_est;
fsk_pulses->ook_low_estimate = s->ook_low_estimate;
fsk_pulses->ook_high_estimate = s->ook_high_estimate;
pulses->end_ago = len - s->data_counter;
@ -532,9 +532,9 @@ int pulse_detect_package(pulse_detect_t *pulse_detect, int16_t const *envelope_d
// FSK Demodulation (continue during short gap - we might return...)
if (pulses->num_pulses == 0) { // Only during first pulse
if (fpdm == FSK_PULSE_DETECT_OLD)
pulse_FSK_detect(fm_data[s->data_counter], fsk_pulses, &s->FSK_state);
pulse_detect_fsk_classic(&s->pulse_detect_fsk, fm_data[s->data_counter], fsk_pulses);
else
pulse_FSK_detect_mm(fm_data[s->data_counter], fsk_pulses, &s->FSK_state);
pulse_detect_fsk_minmax(&s->pulse_detect_fsk, fm_data[s->data_counter], fsk_pulses);
}
break;
case PD_OOK_STATE_GAP:

View file

@ -14,7 +14,6 @@
#include "pulse_detect.h"
#include "pulse_detect_fsk.h"
#include "util.h"
#include "decoder.h"
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
@ -40,7 +39,7 @@
/// @param fm_n One single sample of FM data
/// @param fsk_pulses Will return a pulse_data_t structure for FSK demodulated data
/// @param s Internal state
void pulse_FSK_detect(int16_t fm_n, pulse_data_t *fsk_pulses, pulse_FSK_state_t *s)
void pulse_detect_fsk_classic(pulse_detect_fsk_t *s, int16_t fm_n, pulse_data_t *fsk_pulses)
{
int const fm_f1_delta = abs(fm_n - s->fm_f1_est); // Get delta from F1 frequency estimate
int const fm_f2_delta = abs(fm_n - s->fm_f2_est); // Get delta from F2 frequency estimate
@ -116,7 +115,7 @@ void pulse_FSK_detect(int16_t fm_n, pulse_data_t *fsk_pulses, pulse_FSK_state_t
s->fsk_pulse_length = 0;
// When pulse buffer is full go to error state
if (fsk_pulses->num_pulses >= PD_MAX_PULSES) {
//fprintf(stderr, "pulse_FSK_detect(): Maximum number of pulses reached!\n");
//fprintf(stderr, "pulse_detect_fsk_classic(): Maximum number of pulses reached!\n");
//s->fsk_state = PD_FSK_STATE_ERROR;
// TODO: workaround, specifically for the Inkbird-ITH20R: free some of the buffer
pulse_data_shift(fsk_pulses);
@ -142,7 +141,7 @@ void pulse_FSK_detect(int16_t fm_n, pulse_data_t *fsk_pulses, pulse_FSK_state_t
case PD_FSK_STATE_ERROR: // Stay here until cleared
break;
default:
fprintf(stderr, "pulse_FSK_detect(): Unknown FSK state!!\n");
fprintf(stderr, "pulse_detect_fsk_classic(): Unknown FSK state!!\n");
s->fsk_state = PD_FSK_STATE_ERROR;
} // switch(s->fsk_state)
}
@ -151,7 +150,7 @@ void pulse_FSK_detect(int16_t fm_n, pulse_data_t *fsk_pulses, pulse_FSK_state_t
///
/// @param fsk_pulses Pulse_data_t structure for FSK demodulated data
/// @param s Internal state
void pulse_FSK_wrap_up(pulse_data_t *fsk_pulses, pulse_FSK_state_t *s)
void pulse_detect_fsk_wrap_up(pulse_detect_fsk_t *s, pulse_data_t *fsk_pulses)
{
if (fsk_pulses->num_pulses < PD_MAX_PULSES) { // Avoid overflow
s->fsk_pulse_length++;
@ -173,7 +172,7 @@ void pulse_FSK_wrap_up(pulse_data_t *fsk_pulses, pulse_FSK_state_t *s)
/// @param fm_n One single sample of FM data
/// @param fsk_pulses Will return a pulse_data_t structure for FSK demodulated data
/// @param s Internal state
void pulse_FSK_detect_mm(int16_t fm_n, pulse_data_t *fsk_pulses, pulse_FSK_state_t *s)
void pulse_detect_fsk_minmax(pulse_detect_fsk_t *s, int16_t fm_n, pulse_data_t *fsk_pulses)
{
int16_t mid = 0;
@ -213,7 +212,7 @@ void pulse_FSK_detect_mm(int16_t fm_n, pulse_data_t *fsk_pulses, pulse_FSK_state
s->fsk_pulse_length = 0;
// When pulse buffer is full go to error state
if (fsk_pulses->num_pulses >= PD_MAX_PULSES) {
//fprintf(stderr, "pulse_FSK_detect(): Maximum number of pulses reached!\n");
//fprintf(stderr, "pulse_detect_fsk_minmax(): Maximum number of pulses reached!\n");
//s->fsk_state = PD_FSK_STATE_ERROR;
// TODO: workaround, specifically for the Inkbird-ITH20R: free some of the buffer
pulse_data_shift(fsk_pulses);
@ -224,7 +223,7 @@ void pulse_FSK_detect_mm(int16_t fm_n, pulse_data_t *fsk_pulses, pulse_FSK_state
case PD_FSK_STATE_ERROR: // Stay here until cleared
break;
default:
fprintf(stderr, "pulse_FSK_detect(): Unknown FSK state!!\n");
fprintf(stderr, "pulse_detect_fsk_minmax(): Unknown FSK state!!\n");
s->fsk_state = PD_FSK_STATE_ERROR;
break;
}