GNSS Config
The GnssConfig struct controls all module settings. It is passed to start() at initialization.
GnssConfig config {
.measurementRate_Hz = 1,
.dynamicModel = EDynamicModel::Stationary,
.timepulsePinConfig = TimepulsePinConfig { ... },
.geofencing = std::nullopt,
.rtk = std::nullopt,
.timing = std::nullopt,
.saveToFlash = false
};
hat->start(config);
config = {
'measurement_rate_hz': 1,
'dynamic_model': gnsshat.DynamicModel.STATIONARY,
'timepulse_pin_config': { ... },
'geofencing': None,
'rtk': None,
'timing': None
}
hat.start(config)
jp_gnss_gnss_config_t config;
jp_gnss_gnss_config_init(&config);
config.measurement_rate_hz = 1;
config.dynamic_model = JP_GNSS_DYNAMIC_MODEL_STATIONARY;
// ... set fields ...
jp_gnss_hat_start(hat, &config);
| Field | C++ Type | Description |
|---|---|---|
measurementRate_Hz |
uint16_t |
GNSS measurement rate, 1–25 Hz |
dynamicModel |
EDynamicModel |
Receiver motion model — affects filtering and accuracy. See Dynamic Models |
timepulsePinConfig |
TimepulsePinConfig |
Time pulse output on GPIO 5. See Timepulse |
geofencing |
optional<Geofencing> |
Up to 4 geofences. See Geofencing Config. Not on TIME HAT |
rtk |
optional<RtkConfig> |
RTK mode (Base/Rover). See RTK Config. RTK HAT only |
timing |
optional<TimingConfig> |
Time mark and time base. See Timing Config. TIME HAT only |
saveToFlash |
bool |
Save configuration to u-blox flash memory. Default: false |
NoteRequired Fields —measurementRate_Hz,dynamicModel, andtimepulsePinConfigare always required. The remaining fields are optional and HAT-specific.
Valid range: 1–25 Hz. The library validates this before sending to the module.
| Rate | Use Case |
|---|---|
| 1 Hz | General navigation, timing, low power |
| 5 Hz | Walking, cycling, driving |
| 10 Hz | Fast automotive, drone |
| 25 Hz | High-dynamics applications |
NoteHigher rates increase CPU and SPI/UART bus load. At 25 Hz on the L1 HAT (SPI), expect ~15% CPU usage on a Raspberry Pi 4.
The library validates configuration before sending it to the module:
measurementRate_Hzmust be 1–25timepulsePinConfig.pulseWidthmust be 0.0–0.99- Geofencing requires 1–4 geofences with valid coordinates
- Base config (RTK/Timing) requires valid Survey-In parameters or coordinates
If validation fails, start() returns false.