Skip to main content
GNSS Documentation
GitHub Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

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);

Fields

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
Note
Required FieldsmeasurementRate_Hz, dynamicModel, and timepulsePinConfig are always required. The remaining fields are optional and HAT-specific.

Measurement Rate

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
Note
Higher 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.

Validation

The library validates configuration before sending it to the module:

  • measurementRate_Hz must be 1–25
  • timepulsePinConfig.pulseWidth must 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.