59 .
board =
Board::u_blox9, .hardwareVersion =
"00190000", .baseCapabilityKnown =
true, .protocol27 =
true},
62 .baseCapabilityKnown =
true,
63 .measurementPeriodMs = 200,
66 .
board =
Board::u_blox10, .hardwareVersion =
"000A0000", .baseCapabilityKnown =
true, .protocol27 =
true},
69 .baseCapabilityKnown =
true,
70 .l5HealthOverride =
true,
71 .measurementPeriodMs = 200,
75 .hardwareVersion =
"000B0000",
77 .baseCapabilityKnown =
true,
78 .l5HealthOverride =
true,
85 if (profile.board == board) {
96 if (!profile.hardwareVersion.empty() && profile.hardwareVersion == hardwareVersion) {
124inline constexpr std::array
BAUD_RATES{38400u, 57600u, 9600u, 115200u, 230400u, 460800u, 921600u};
147 template <
typename T>
150 ,
value(static_cast<uint32_t>(static_cast<std::make_unsigned_t<T>>(setValue)))
206[[nodiscard]] ValsetBatch
rtcmOutput(
bool compactObservations);
234[[nodiscard]] std::array<uint8_t, 2 * WIRE_SIZE<CfgPrt>>
legacyPorts(uint32_t baudrate);
264[[nodiscard]] std::array<RTCMOutput, 6>
legacyRTCMOutput(
bool compactObservations);
constexpr MsgOutKey MSGOUT_UBX_RXM_SFRBX
constexpr MsgOutKey MSGOUT_UBX_RXM_RAWX
constexpr MsgOutKey MSGOUT_UBX_NAV_TIMEGPS
constexpr MessageId NAV_SVIN
constexpr MessageId RXM_SFRBX
constexpr MessageId NAV_TIMEGPS
constexpr MessageId RXM_RAWX
ValsetBatch rtcmOutput(bool compactObservations)
Base output at 1 Hz: station position, observations in the selected MSM format and GLONASS biases.
constexpr uint8_t NO_OUTPUT
constexpr MessageRate LEGACY_SURVEY_STATUS
ValsetBatch fixedBase(const GPSBaseStationConfig::Fixed &fixed)
constexpr CfgRate LEGACY_BASE_RATE
ValsetBatch jammingDetection()
Probes CFG-SEC-JAMDET, which F9 HPG 1.50+, F9 L1L5 and X20 have instead of CFG-ITFM.
std::array< MessageRate, 5 > legacyMessageOutput()
NAV-PVT, status, satellite and MON-HW (antenna and jamming) rates during the survey.
ValsetBatch disableRTCMOutput()
Stops RTCM output, including observations a previous session left in the other MSM format.
constexpr std::chrono::milliseconds CONFIG_TIMEOUT
Acknowledgement timeout of one configuration command.
constexpr uint8_t SURVEY_SATELLITE_RATE
NAV-SAT every tenth survey epoch.
ValsetBatch interferenceMonitor()
Enables the interference monitor of firmware without CFG-SEC-JAMDET.
constexpr std::chrono::milliseconds LEGACY_REPLY_TIMEOUT
The u-blox 8 protocol has CFG commands acknowledged within one second.
constexpr uint16_t BASE_MEASUREMENT_PERIOD_MS
RTCM output only needs 1 Hz; the survey keeps the faster navigation rate because it converges faster.
constexpr std::array< UnexpectedOutput, 3 > UNEXPECTED_OUTPUT
constexpr std::chrono::milliseconds IDENTITY_TIMEOUT
Slow factory NMEA output can delay a MON-VER response by over a second.
constexpr std::chrono::milliseconds PORT_TIMEOUT
constexpr std::chrono::milliseconds SURVEY_STOP_TIMEOUT
constexpr uint8_t BASE_SATELLITE_INFO_RATE
ValsetBatch uart1Baudrate(uint32_t baudrate)
constexpr uint16_t LEGACY_PORT_UART1
constexpr std::chrono::milliseconds SURVEY_STOP_POLL
std::vector< ValsetBatch > portsAndNavigation(const ReceiverProfile &profile)
Protocol 27+ configuration before jamming detection: ports, navigation, odometer and RTK.
constexpr size_t VALSET_CAPACITY
Bounds a CFG-VALSET independently of received message sizes.
std::array< MessageRate, 10 > legacyDisableRTCMOutput()
Written without waiting for acknowledgements.
constexpr CfgRate LEGACY_SURVEY_RATE
5 Hz, UTC-aligned.
CfgTmode3 legacySurveyIn(const GPSBaseStationConfig::SurveyIn &survey)
NakPolicy
What a batch that is rejected, unanswered or not written means for configuration.
@ WriteOnly
Required, but written without awaiting the reply.
@ Warn
Optional, but worth a warning.
@ Tolerate
Optional: firmware without these keys rejects them, or the configuration flow decides.
@ Fail
Required: configuration stops.
std::vector< ValsetBatch > messageOutput(const ReceiverProfile &profile)
Protocol 27+ configuration after jamming detection: message output and receiver-specific extras.
ValsetBatch uart1Protocols()
Protocol 27+ port setup at the detected baud rate: UBX only on UART1, 8N1.
constexpr CfgNav5 LEGACY_NAVIGATION
Updates only the dynamic model and the fix mode (3D only).
constexpr unsigned BASE_BAUD
The link rate a base is moved to when no rate is selected.
std::array< uint8_t, 2 *WIRE_SIZE< CfgPrt > > legacyPorts(uint32_t baudrate)
std::array< RTCMOutput, 6 > legacyRTCMOutput(bool compactObservations)
ValsetBatch disableTimeMode()
CfgTmode3 legacyFixedBase(const GPSBaseStationConfig::Fixed &fixed)
ValsetBatch surveyIn(const GPSBaseStationConfig::SurveyIn &survey)
constexpr uint16_t LEGACY_PORT_USB
constexpr uint8_t SURVEY_STATUS_RATE
constexpr std::array BAUD_RATES
Probing order of the automatic baud detection.
constexpr std::chrono::microseconds DISABLE_MESSAGE_INTERVAL
An unwanted message is disabled at most this often; some cannot be disabled.
ValsetBatch disableMessage(MsgOutKey key)
Disables unexpected output; the reply is not awaited.
constexpr std::chrono::milliseconds BAUD_PROBE_DRAIN
Traffic the baud probe drains before polling MON-VER.
std::array< MessageRate, 2 > legacyBaseStatus()
Survey status and satellite rates for the 1 Hz base; rejections are ignored.
constexpr uint8_t STATIONARY_DYNAMIC_MODEL
Base stations always use the stationary navigation model.
u-blox receivers over UBX: CFG-VALSET configuration from protocol 27, CFG-MSG and CFG-TMODE3 before i...
constexpr ReceiverProfile receiverProfile(Board board)
constexpr std::array RECEIVER_PROFILES
constexpr Board boardFromHardwareVersion(std::string_view hardwareVersion)
The generation whose MON-VER hwVersion is hardwareVersion; unknown when none matches.
A configuration key whose value is written and read as T.
A CFG-MSGOUT output rate key family, named by its I2C key.
CFG-MSG output rate of one message, as a divisor of the measurement rate.
Messages a protocol 27+ receiver can send unasked and their CFG-MSGOUT keys, which a message ID does ...
std::chrono::milliseconds timeout
bool included
Whether the receiver takes this batch at all.
std::vector< ValsetItem > items
uint32_t key
The key, or the I2C key of a CFG-MSGOUT family.
constexpr ValsetItem(CfgKey< T > setting, std::type_identity_t< T > setValue, bool when=true)
constexpr ValsetItem(MsgOutKey output, uint8_t rate, bool when=true)
bool protocol27
Configures through CFG-VALSET unless MON-VER reports an older protocol version.
bool rtcmOutput
RTCM3 base output (F9P and X20); only these receivers are configured as a base.
bool baseCapabilityKnown
The board alone tells whether it can be a base station.
uint16_t measurementPeriodMs
bool l5HealthOverride
GPS L5 is broadcast unhealthy while pre-operational; L1/L5 receivers take the L1 health flag instead.
std::string_view hardwareVersion
MON-VER hwVersion of a generation; refined boards have none.