@@ -6660,7 +6660,7 @@ bool SFE_UBLOX_GNSS::getSurveyMode(uint16_t maxWait)
66606660}
66616661
66626662// Control Survey-In for NEO-M8P
6663- bool SFE_UBLOX_GNSS::setSurveyMode(uint8_t mode, uint32_t observationTime, float requiredAccuracy, uint16_t maxWait)
6663+ bool SFE_UBLOX_GNSS::setSurveyMode(uint8_t mode, uint16_t observationTime, float requiredAccuracy, uint16_t maxWait)
66646664{
66656665 if (getSurveyMode(maxWait) == false) // Ask module for the current TimeMode3 settings. Loads into payloadCfg.
66666666 return (false);
@@ -6673,11 +6673,11 @@ bool SFE_UBLOX_GNSS::setSurveyMode(uint8_t mode, uint32_t observationTime, float
66736673 // payloadCfg should be loaded with poll response. Now modify only the bits we care about
66746674 payloadCfg[2] = mode; // Set mode. Survey-In and Disabled are most common. Use ECEF (not LAT/LON/ALT).
66756675
6676- // svinMinDur is U4 (uint32_t) in seconds
6676+ // svinMinDur is U4 (uint32_t) but we'll only use a uint16_t (waiting more than 65535 seconds seems excessive!)
66776677 payloadCfg[24] = observationTime & 0xFF; // svinMinDur in seconds
66786678 payloadCfg[25] = observationTime >> 8; // svinMinDur in seconds
6679- payloadCfg[26] = observationTime >> 16;
6680- payloadCfg[27] = observationTime >> 24;
6679+ payloadCfg[26] = 0; // Truncate to 16 bits
6680+ payloadCfg[27] = 0; // Truncate to 16 bits
66816681
66826682 // svinAccLimit is U4 (uint32_t) in 0.1mm.
66836683 uint32_t svinAccLimit = (uint32_t)(requiredAccuracy * 10000.0); // Convert m to 0.1mm
@@ -6690,7 +6690,7 @@ bool SFE_UBLOX_GNSS::setSurveyMode(uint8_t mode, uint32_t observationTime, float
66906690}
66916691
66926692// Begin Survey-In for NEO-M8P
6693- bool SFE_UBLOX_GNSS::enableSurveyMode(uint32_t observationTime, float requiredAccuracy, uint16_t maxWait)
6693+ bool SFE_UBLOX_GNSS::enableSurveyMode(uint16_t observationTime, float requiredAccuracy, uint16_t maxWait)
66946694{
66956695 return (setSurveyMode(SVIN_MODE_ENABLE, observationTime, requiredAccuracy, maxWait));
66966696}
0 commit comments