C++ API
Include <jimmypaputto/GnssHat.hpp>, namespace JimmyPaputto.
The main API. Obtain an instance via the factory method:
auto* hat = IGnssHat::create();
| Method | Return | Description |
|---|
IGnssHat::create() | IGnssHat* | Factory — detects HAT variant and returns the correct implementation |
start(const GnssConfig& config) | bool | Configure the u-blox module and start data acquisition. Returns false on validation or communication failure |
name() | std::string_view | HAT product name (e.g. "L1 GNSS HAT", "L1/L5 GNSS TIME HAT") |
| Method | Return | Description |
|---|
waitAndGetFreshNavigation() | Navigation | Block until new navigation data arrives, then return it |
navigation() | Navigation | Return the last known navigation data immediately (non-blocking) |
| Method | Return | Description |
|---|
softResetUbloxSom_HotStart() | void | Soft reset — preserves ephemeris and almanac for fast TTFF |
hardResetUbloxSom_ColdStart() | void | Full cold reset — clears all stored satellite data |
| Method | Return | Description |
|---|
rtk() | IRtk* | RTK interface. Non-null only on the RTK HAT |
| Method | Return | Description |
|---|
enableTimepulse() | bool | Enable timepulse interrupt on GPIO 5 |
disableTimepulse() | void | Disable timepulse interrupt |
timepulse() | void | Block until the next timepulse edge |
| Method | Return | Description |
|---|
timeMark() | std::optional<TimeMark> | Return last TimeMark or std::nullopt (non-blocking) |
waitAndGetFreshTimeMark() | TimeMark | Block until a new TimeMark event arrives |
enableTimeMarkTrigger() | bool | Enable EXTINT pin (GPIO 17) as output for software triggers |
disableTimeMarkTrigger() | void | Disable EXTINT trigger |
triggerTimeMark(edge) | void | Toggle/raise/lower EXTINT pin. Default: ETimeMarkTriggerEdge::Toggle |
| Method | Return | Description |
|---|
startForwardForGpsd() | bool | Create virtual serial port and start NMEA forwarding thread |
stopForwardForGpsd() | void | Stop forwarding and remove virtual device |
joinForwardForGpsd() | void | Block until the forwarder thread finishes |
getGpsdDevicePath() | std::string | Path to the virtual serial port (e.g. /dev/jimmypaputto/gnss) |
Accessed via hat->rtk(). Returns nullptr on non-RTK HATs.
IRtk* rtk = hat->rtk();
IBase* base = rtk->base();
IRover* rover = rtk->rover();
| Method | Return | Description |
|---|
getFullCorrections() | vector<vector<uint8_t>> | Full RTCM3 correction set (M7M) |
getTinyCorrections() | vector<vector<uint8_t>> | Compact RTCM3 correction set (M4M) |
getRtcm3Frame(uint16_t id) | vector<uint8_t> | Specific RTCM3 message by ID |
| Method | Return | Description |
|---|
applyCorrections(const vector<vector<uint8_t>>& corrections) | void | Inject RTCM3 corrections from a base station |
Namespace JimmyPaputto::Utils:
| Function | Return | Description |
|---|
eFixQuality2string(EFixQuality) | std::string | Fix quality to human-readable string |
eFixStatus2string(EFixStatus) | std::string | Fix status to string |
eFixType2string(EFixType) | std::string | Fix type to string |
jammingState2string(EJammingState) | std::string | Jamming state to string |
antennaStatus2string(EAntennaStatus) | std::string | Antenna status to string |
antennaPower2string(EAntennaPower) | std::string | Antenna power to string |
eBand2string(EGnssBand) | std::string | GNSS band to string |
geofencingStatus2string(EGeofencingStatus) | std::string | Geofencing status to string |
geofenceStatus2string(EGeofenceStatus) | std::string | Per-fence status to string |
gnssId2string(EGnssId) | std::string | Constellation to string |
svQuality2string(ESvQuality) | std::string | Signal quality to string |
timeMarkMode2string(ETimeMarkMode) | std::string | Time mark mode to string |
timeMarkRun2string(ETimeMarkRun) | std::string | Time mark run state to string |
timeMarkTimeBase2string(ETimeMarkTimeBase) | std::string | Time base to string |
utcTimeFromGnss_ISO8601(const PositionVelocityTime&) | std::string | UTC time as ISO 8601 string |