From dee7f1d956460b8391713aeeccf9aff773af0a9c Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sun, 30 Aug 2015 14:23:20 +0200 Subject: [PATCH] Data validator: Add option to configure timeout --- src/lib/ecl/validation/data_validator.h | 7 +++++++ src/lib/ecl/validation/data_validator_group.h | 20 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/lib/ecl/validation/data_validator.h b/src/lib/ecl/validation/data_validator.h index c7ec8526c9..f768c278bd 100644 --- a/src/lib/ecl/validation/data_validator.h +++ b/src/lib/ecl/validation/data_validator.h @@ -92,6 +92,13 @@ public: */ void print(); + /** + * Set the timeout value + * + * @param timeout_interval_us The timeout interval in microseconds + */ + void set_timeout(uint64_t timeout_interval_us) { _timeout_interval = timeout_interval_us; } + private: static const unsigned _dimensions = 3; uint64_t _time_last; /**< last timestamp */ diff --git a/src/lib/ecl/validation/data_validator_group.h b/src/lib/ecl/validation/data_validator_group.h index 6b420b3f27..e67f878eb8 100644 --- a/src/lib/ecl/validation/data_validator_group.h +++ b/src/lib/ecl/validation/data_validator_group.h @@ -85,6 +85,13 @@ public: */ void print(); + /** + * Set the timeout value + * + * @param timeout_interval_us The timeout interval in microseconds + */ + void set_timeout(uint64_t timeout_interval_us); + private: DataValidator *_first; /**< sibling in the group */ int _curr_best; /**< currently best index */ @@ -118,6 +125,17 @@ DataValidatorGroup::~DataValidatorGroup() } +void +DataValidatorGroup::set_timeout(uint64_t timeout_interval_us) +{ + DataValidator *next = _first; + + while (next != nullptr) { + next->set_timeout(timeout_interval_us); + next = next->sibling(); + } +} + void DataValidatorGroup::put(unsigned index, uint64_t timestamp, float val[3], uint64_t error_count) { @@ -141,7 +159,7 @@ DataValidatorGroup::get_best(uint64_t timestamp, int *index) // XXX This should eventually also include voting int pre_check_best = _curr_best; - float max_confidence = 0.0f; + float max_confidence = -1.0f; int max_index = -1; uint64_t min_error_count = 30000; DataValidator *best = nullptr;