Skip to main content
GNSS HAT Library Documentation
Shop 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);
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);
config = {
    'measurement_rate_hz': 1,
    'dynamic_model': gnsshat.DynamicModel.STATIONARY,
    'timepulse_pin_config': { ... },
    'geofencing': None,
    'rtk': None,
    'timing': None
}
hat.start(config)

Fields

FieldC++ TypeDescription
measurementRate_Hzuint16_tGNSS measurement rate, 1–25 Hz
dynamicModelEDynamicModelReceiver motion model — affects filtering and accuracy. See Dynamic Models
timepulsePinConfigTimepulsePinConfigTime pulse output on GPIO 5. See Timepulse
geofencingoptional<Geofencing>Up to 4 geofences. See Geofencing Config. Not on TIME HAT
rtkoptional<RtkConfig>RTK mode (Base/Rover). See RTK Config. RTK HAT only
timingoptional<TimingConfig>Time mark and time base. See Timing Config. TIME HAT only
saveToFlashboolSave configuration to u-blox flash memory. Default: false
Note
Required Fields — measurementRate_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.

RateUse Case
1 HzGeneral navigation, timing, low power
5 HzWalking, cycling, driving
10 HzFast automotive, drone
25 HzHigh-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.