mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 17:18:52 +08:00
GPS: Prevent injection from choking the driver (#12710)
Sending a continuous stream of injection messages can cause the GPS driver to get stuck indefinitely in the handling loop.
This commit is contained in:
@@ -416,7 +416,15 @@ void GPS::handleInjectDataTopic()
|
||||
{
|
||||
bool updated = false;
|
||||
|
||||
// Limit maximum number of GPS injections to 6 since usually
|
||||
// GPS injections should consist of 1-4 packets (GPS, Glonass, Baidu, Galileo).
|
||||
// Looking at 6 packets thus guarantees, that at least a full injection
|
||||
// data set is evaluated.
|
||||
const size_t max_num_injections = 6;
|
||||
size_t num_injections = 0;
|
||||
|
||||
do {
|
||||
num_injections++;
|
||||
updated = _orb_inject_data_sub.updated();
|
||||
|
||||
if (updated) {
|
||||
@@ -431,7 +439,7 @@ void GPS::handleInjectDataTopic()
|
||||
|
||||
++_last_rate_rtcm_injection_count;
|
||||
}
|
||||
} while (updated);
|
||||
} while (updated && num_injections < max_num_injections);
|
||||
}
|
||||
|
||||
bool GPS::injectData(uint8_t *data, size_t len)
|
||||
|
||||
Reference in New Issue
Block a user