mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-06-27 14:40:34 +08:00
Reverse the linked list of data_validator_group and maintain a first node
for search from index 0 Fixes issue PX4/Firmware#8644
This commit is contained in:
@@ -45,19 +45,31 @@
|
||||
|
||||
DataValidatorGroup::DataValidatorGroup(unsigned siblings) :
|
||||
_first(nullptr),
|
||||
_last(nullptr),
|
||||
_curr_best(-1),
|
||||
_prev_best(-1),
|
||||
_first_failover_time(0),
|
||||
_toggle_count(0)
|
||||
{
|
||||
DataValidator *next = _first;
|
||||
DataValidator *next = nullptr;
|
||||
DataValidator *prev = nullptr;
|
||||
|
||||
for (unsigned i = 0; i < siblings; i++) {
|
||||
next = new DataValidator(next);
|
||||
next = new DataValidator();
|
||||
if(i == 0) {
|
||||
_first = next;
|
||||
}
|
||||
else {
|
||||
prev->sibling(next);
|
||||
}
|
||||
prev = next;
|
||||
}
|
||||
|
||||
_first = next;
|
||||
_timeout_interval_us = _first->get_timeout();
|
||||
_last = next;
|
||||
|
||||
if(_first) {
|
||||
_timeout_interval_us = _first->get_timeout();
|
||||
}
|
||||
}
|
||||
|
||||
DataValidatorGroup::~DataValidatorGroup()
|
||||
@@ -71,13 +83,14 @@ DataValidatorGroup::~DataValidatorGroup()
|
||||
|
||||
DataValidator *DataValidatorGroup::add_new_validator()
|
||||
{
|
||||
DataValidator *validator = new DataValidator(_first);
|
||||
DataValidator *validator = new DataValidator();
|
||||
if (!validator) {
|
||||
return nullptr;
|
||||
}
|
||||
_first = validator;
|
||||
_first->set_timeout(_timeout_interval_us);
|
||||
return _first;
|
||||
_last->sibling(validator);
|
||||
_last = validator;
|
||||
_last->set_timeout(_timeout_interval_us);
|
||||
return _last;
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user