mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-01 13:38:38 -04:00
AP_Mission: memoise result of contains_terrain_relative
527 items takes ~2200us on CubeOrange which is way too long
This commit is contained in:
parent
4c674b64fb
commit
50fb56a74f
@ -2465,9 +2465,18 @@ bool AP_Mission::contains_item(MAV_CMD command) const
|
||||
}
|
||||
|
||||
/*
|
||||
return true if the mission has a terrain relative item
|
||||
return true if the mission has a terrain relative item. ~2200us for 530 items on H7
|
||||
*/
|
||||
bool AP_Mission::contains_terrain_relative(void) const
|
||||
bool AP_Mission::contains_terrain_relative(void)
|
||||
{
|
||||
if (_last_contains_relative_calculated_ms != _last_change_time_ms) {
|
||||
_contains_terrain_relative = calculate_contains_terrain_relative();
|
||||
_last_contains_relative_calculated_ms = _last_change_time_ms;
|
||||
}
|
||||
return _contains_terrain_relative;
|
||||
}
|
||||
|
||||
bool AP_Mission::calculate_contains_terrain_relative(void) const
|
||||
{
|
||||
for (int i = 1; i < num_commands(); i++) {
|
||||
Mission_Command tmp;
|
||||
|
@ -620,8 +620,8 @@ public:
|
||||
bool contains_item(MAV_CMD command) const;
|
||||
|
||||
// returns true if the mission has a terrain relative mission item
|
||||
bool contains_terrain_relative(void) const;
|
||||
|
||||
bool contains_terrain_relative(void);
|
||||
|
||||
// reset the mission history to prevent recalling previous mission histories when restarting missions.
|
||||
void reset_wp_history(void);
|
||||
|
||||
@ -764,6 +764,10 @@ private:
|
||||
// last time that mission changed
|
||||
uint32_t _last_change_time_ms;
|
||||
|
||||
// memoisation of contains-relative:
|
||||
bool _contains_terrain_relative; // true if the mission has terrain-relative items
|
||||
uint32_t _last_contains_relative_calculated_ms; // will be equal to _last_change_time_ms if _contains_terrain_relative is up-to-date
|
||||
bool calculate_contains_terrain_relative(void) const;
|
||||
|
||||
// multi-thread support. This is static so it can be used from
|
||||
// const functions
|
||||
|
Loading…
Reference in New Issue
Block a user