From 4098aa84bbca31b3cd70a84e723354fdee98694a Mon Sep 17 00:00:00 2001 From: Xael South Date: Thu, 28 Jan 2021 13:32:59 +0000 Subject: [PATCH] configurable decimation rate --- rtl_wmbus.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/rtl_wmbus.c b/rtl_wmbus.c index e7eac99..e6cbbe2 100644 --- a/rtl_wmbus.c +++ b/rtl_wmbus.c @@ -446,19 +446,21 @@ static void time2_algorithm(unsigned bit, unsigned rssi, struct time2_algorithm static int opts_run_length_algorithm_enabled = 1; static int opts_time2_algorithm_enabled = 1; +static unsigned decimation_rate = 2u; static void print_usage(const char *program_name) { fprintf(stdout, "Usage %s:\n", program_name); fprintf(stdout, "\t-r 0 to disable run length algorithm\n"); fprintf(stdout, "\t-t 0 to disable time2 algorithm\n"); + fprintf(stdout, "\t-d 2 set decimation rate to 2 (defaults to 2 if omitted)\n"); } static void process_options(int argc, char *argv[]) { int option; - while ((option = getopt(argc, argv, "r:t:")) != -1) + while ((option = getopt(argc, argv, "d:r:t:")) != -1) { switch (option) { @@ -484,6 +486,9 @@ static void process_options(int argc, char *argv[]) exit(EXIT_FAILURE); } break; + case 'd': + decimation_rate = strtoul(optarg, NULL, 10); + break; default: print_usage(argv[0]); exit(EXIT_FAILURE); @@ -500,7 +505,7 @@ int main(int argc, char *argv[]) // configurable via command line. const unsigned CLOCK_LOCK_THRESHOLD = 2; - const unsigned DECIMATION_RATE = 2; + // --- parameter section end --- __attribute__((__aligned__(16))) uint8_t samples[4096]; @@ -577,7 +582,7 @@ int main(int argc, char *argv[]) #endif ++decimation_rate_index; - if (decimation_rate_index < DECIMATION_RATE) continue; + if (decimation_rate_index < decimation_rate) continue; decimation_rate_index = 0; // Demodulate. @@ -602,7 +607,7 @@ int main(int argc, char *argv[]) rssi = rssi_filter(rssi); // comment out, if rssi filtering is unwanted #if defined(USE_MOVING_AVERAGE) // If using moving average, we would have doubles of each of i- and q- signal components. - rssi /= DECIMATION_RATE; + rssi /= decimation_rate; #endif // --- rssi filtering section end ---