14#ifndef NRF_MODEM_GNSS_H__
15#define NRF_MODEM_GNSS_H__
25#define NRF_MODEM_GNSS_MAX_SYSTEMS 4
30#define NRF_MODEM_GNSS_MAX_SIGNALS 4
33#define NRF_MODEM_GNSS_MAX_SATELLITES 12
36#define NRF_MODEM_GNSS_NUM_GPS_SATELLITES 32
44#define NRF_MODEM_GNSS_SYSTEM_INVALID 0
46#define NRF_MODEM_GNSS_SYSTEM_GPS 1
48#define NRF_MODEM_GNSS_SYSTEM_QZSS 3
57#define NRF_MODEM_GNSS_SIGNAL_INVALID 0
59#define NRF_MODEM_GNSS_SIGNAL_GPS_L1_CA 1
61#define NRF_MODEM_GNSS_SIGNAL_QZSS_L1_CA 3
76#define NRF_MODEM_GNSS_SYSTEM_GPS_L1_CA_MASK 0x01
78#define NRF_MODEM_GNSS_SYSTEM_QZSS_L1_CA_MASK 0x04
90#define NRF_MODEM_GNSS_NMEA_GGA_MASK 0x01
92#define NRF_MODEM_GNSS_NMEA_GLL_MASK 0x02
94#define NRF_MODEM_GNSS_NMEA_GSA_MASK 0x04
96#define NRF_MODEM_GNSS_NMEA_GSV_MASK 0x08
98#define NRF_MODEM_GNSS_NMEA_RMC_MASK 0x10
111#define NRF_MODEM_GNSS_PSM_DISABLED 0
113#define NRF_MODEM_GNSS_PSM_DUTY_CYCLING_PERFORMANCE 1
115#define NRF_MODEM_GNSS_PSM_DUTY_CYCLING_POWER 2
130#define NRF_MODEM_GNSS_USE_CASE_MULTIPLE_HOT_START 0x01
137#define NRF_MODEM_GNSS_USE_CASE_LOW_ACCURACY 0x02
153#define NRF_MODEM_GNSS_USE_CASE_SCHED_DOWNLOAD_DISABLE 0x04
162#define NRF_MODEM_GNSS_PVT_FLAG_FIX_VALID 0x01
170#define NRF_MODEM_GNSS_PVT_FLAG_LEAP_SECOND_VALID 0x02
175#define NRF_MODEM_GNSS_PVT_FLAG_SLEEP_BETWEEN_PVT 0x04
181#define NRF_MODEM_GNSS_PVT_FLAG_DEADLINE_MISSED 0x08
188#define NRF_MODEM_GNSS_PVT_FLAG_NOT_ENOUGH_WINDOW_TIME 0x10
190#define NRF_MODEM_GNSS_PVT_FLAG_VELOCITY_VALID 0x20
198#define NRF_MODEM_GNSS_PVT_FLAG_SCHED_DOWNLOAD 0x40
207#define NRF_MODEM_GNSS_SV_FLAG_USED_IN_FIX 0x02
209#define NRF_MODEM_GNSS_SV_FLAG_UNHEALTHY 0x08
222#define NRF_MODEM_GNSS_AGNSS_GPS_UTC_PARAMETERS 1
227#define NRF_MODEM_GNSS_AGNSS_GPS_EPHEMERIDES 2
232#define NRF_MODEM_GNSS_AGNSS_GPS_ALMANAC 3
237#define NRF_MODEM_GNSS_AGNSS_KLOBUCHAR_IONOSPHERIC_CORRECTION 4
242#define NRF_MODEM_GNSS_AGNSS_NEQUICK_IONOSPHERIC_CORRECTION 5
247#define NRF_MODEM_GNSS_AGNSS_GPS_SYSTEM_CLOCK_AND_TOWS 6
252#define NRF_MODEM_GNSS_AGNSS_LOCATION 7
257#define NRF_MODEM_GNSS_AGPS_INTEGRITY 8
264#define NRF_MODEM_GNSS_AGNSS_INTEGRITY 9
279#define NRF_MODEM_GNSS_EVT_PVT 1
287#define NRF_MODEM_GNSS_EVT_FIX 2
292#define NRF_MODEM_GNSS_EVT_NMEA 3
297#define NRF_MODEM_GNSS_EVT_AGNSS_REQ 4
302#define NRF_MODEM_GNSS_EVT_BLOCKED 5
307#define NRF_MODEM_GNSS_EVT_UNBLOCKED 6
315#define NRF_MODEM_GNSS_EVT_PERIODIC_WAKEUP 7
320#define NRF_MODEM_GNSS_EVT_SLEEP_AFTER_TIMEOUT 8
325#define NRF_MODEM_GNSS_EVT_SLEEP_AFTER_FIX 9
330#define NRF_MODEM_GNSS_EVT_REF_ALT_EXPIRED 10
344#define NRF_MODEM_GNSS_DATA_PVT 1
353#define NRF_MODEM_GNSS_DATA_NMEA 2
360#define NRF_MODEM_GNSS_DATA_AGNSS_REQ 3
401#define NRF_MODEM_GNSS_TIMING_SOURCE_RTC 0
403#define NRF_MODEM_GNSS_TIMING_SOURCE_TCXO 1
415#define NRF_MODEM_GNSS_QZSS_NMEA_MODE_STANDARD 0
420#define NRF_MODEM_GNSS_QZSS_NMEA_MODE_CUSTOM 1
503#define NRF_MODEM_GNSS_NMEA_MAX_LEN 83
517#define NRF_MODEM_GNSS_AGNSS_GPS_UTC_REQUEST 0x01
519#define NRF_MODEM_GNSS_AGNSS_KLOBUCHAR_REQUEST 0x02
521#define NRF_MODEM_GNSS_AGNSS_NEQUICK_REQUEST 0x04
523#define NRF_MODEM_GNSS_AGNSS_GPS_SYS_TIME_AND_SV_TOW_REQUEST 0x08
525#define NRF_MODEM_GNSS_AGNSS_POSITION_REQUEST 0x10
527#define NRF_MODEM_GNSS_AGNSS_INTEGRITY_REQUEST 0x20
560#define NRF_MODEM_GNSS_MAX_SV_EXPIRY_TIMES 127
793#define NRF_MODEM_GNSS_AGNSS_GPS_MAX_SV_TOW 32
900#define NRF_MODEM_GNSS_DELETE_EPHEMERIDES 0x001
902#define NRF_MODEM_GNSS_DELETE_ALMANACS 0x002
904#define NRF_MODEM_GNSS_DELETE_IONO_CORRECTION_DATA 0x004
906#define NRF_MODEM_GNSS_DELETE_LAST_GOOD_FIX 0x008
908#define NRF_MODEM_GNSS_DELETE_GPS_TOW 0x010
910#define NRF_MODEM_GNSS_DELETE_GPS_WEEK 0x020
912#define NRF_MODEM_GNSS_DELETE_UTC_DATA 0x040
914#define NRF_MODEM_GNSS_DELETE_TCXO_OFFSET 0x080
916#define NRF_MODEM_GNSS_DELETE_GPS_TOW_PRECISION 0x100
921#define NRF_MODEM_GNSS_DELETE_EKF 0x400
938#define NRF_MODEM_GNSS_DYNAMICS_GENERAL_PURPOSE 0
940#define NRF_MODEM_GNSS_DYNAMICS_STATIONARY 1
942#define NRF_MODEM_GNSS_DYNAMICS_PEDESTRIAN 2
944#define NRF_MODEM_GNSS_DYNAMICS_AUTOMOTIVE 3
int32_t nrf_modem_gnss_power_mode_set(uint8_t power_mode)
Sets the used power saving mode.
int32_t nrf_modem_gnss_start(void)
Starts GNSS.
int32_t nrf_modem_gnss_1pps_disable(void)
Disables 1PPS functionality.
int32_t nrf_modem_gnss_timing_source_set(uint8_t timing_source)
Sets the used timing source during GNSS sleep.
int32_t nrf_modem_gnss_nv_data_delete(uint32_t delete_mask)
Deletes GNSS data from non-volatile memory.
int32_t nrf_modem_gnss_read(void *buf, int32_t buf_len, int type)
Reads data from GNSS.
int32_t nrf_modem_gnss_elevation_threshold_set(uint8_t angle)
Set below which elevation angle GNSS should stop tracking a satellite.
int32_t nrf_modem_gnss_event_handler_set(nrf_modem_gnss_event_handler_type_t handler)
Sets the GNSS event handler.
int32_t nrf_modem_gnss_qzss_prn_mask_set(uint16_t prn_mask)
Sets which QZSS PRNs are enabled.
int32_t nrf_modem_gnss_fix_interval_set(uint16_t fix_interval)
Sets the GNSS fix interval in seconds.
int32_t nrf_modem_gnss_fix_retry_set(uint16_t fix_retry)
Sets the GNSS fix retry period in seconds.
int32_t nrf_modem_gnss_prio_mode_enable(void)
Enables GNSS priority over LTE idle mode procedures.
int32_t nrf_modem_gnss_prio_mode_disable(void)
Disables GNSS priority over LTE idle mode procedures.
int32_t nrf_modem_gnss_1pps_enable(const struct nrf_modem_gnss_1pps_config *config)
Enables 1PPS functionality.
#define NRF_MODEM_GNSS_AGNSS_GPS_MAX_SV_TOW
Maximum number of TOW elements in the TOW array.
Definition nrf_modem_gnss.h:793
#define NRF_MODEM_GNSS_MAX_SATELLITES
Maximum number of satellites that can be tracked at the same time.
Definition nrf_modem_gnss.h:33
int32_t nrf_modem_gnss_nmea_mask_set(uint16_t nmea_mask)
Sets which NMEA strings are enabled.
#define NRF_MODEM_GNSS_MAX_SIGNALS
Definition nrf_modem_gnss.h:30
void(* nrf_modem_gnss_event_handler_type_t)(int event)
Event handler prototype.
Definition nrf_modem_gnss.h:951
int32_t nrf_modem_gnss_qzss_nmea_mode_set(uint8_t nmea_mode)
Sets the used QZSS NMEA mode.
#define NRF_MODEM_GNSS_NMEA_MAX_LEN
Maximum length of an NMEA string including the null-terminator.
Definition nrf_modem_gnss.h:503
int32_t nrf_modem_gnss_signal_mask_set(uint8_t signal_mask)
Sets the supported GNSS signals. Signals which have the corresponding bit set are enabled.
#define NRF_MODEM_GNSS_MAX_SV_EXPIRY_TIMES
Definition nrf_modem_gnss.h:560
int32_t nrf_modem_gnss_stop(void)
Stops GNSS.
int32_t nrf_modem_gnss_agnss_expiry_get(struct nrf_modem_gnss_agnss_expiry *agnss_expiry)
Reads the current A-GNSS data need and expiry times from GNSS.
int32_t nrf_modem_gnss_agnss_write(void *buf, int32_t buf_len, uint16_t type)
Writes A-GNSS data to GNSS.
#define NRF_MODEM_GNSS_MAX_SYSTEMS
Definition nrf_modem_gnss.h:25
int32_t nrf_modem_gnss_dyn_mode_change(uint32_t mode)
Changes GNSS dynamics mode.
int32_t nrf_modem_gnss_use_case_set(uint8_t use_case)
Sets targeted start and runtime performance.
uint8_t minute
Minute of the hour. Range 0...59.
Definition nrf_modem_gnss.h:383
uint8_t day
Day of the month. Range 1...31.
Definition nrf_modem_gnss.h:379
uint16_t year
Gregorian year. Range 0...4000.
Definition nrf_modem_gnss.h:375
uint16_t pulse_width
Pulse width in milliseconds. Range 1...500ms.
Definition nrf_modem_gnss.h:369
uint8_t month
Month of the year. Range 1...12.
Definition nrf_modem_gnss.h:377
uint8_t second
Second of the minute. Range 0...59.
Definition nrf_modem_gnss.h:385
uint16_t pulse_interval
Pulse interval in seconds. Range 0...1800s. Value 0 denotes one-time pulse mode.
Definition nrf_modem_gnss.h:367
uint8_t hour
Hour of the day. Range 0...23.
Definition nrf_modem_gnss.h:381
bool apply_start_time
If true, pulses are started at given start time. If false, the date and time fields are ignored.
Definition nrf_modem_gnss.h:373
Configuration for the nrf_modem_gnss_1pps_enable function.
Definition nrf_modem_gnss.h:364
uint32_t data_flags
Indicating what kind of A-GNSS data is needed by GNSS.
Definition nrf_modem_gnss.h:552
uint8_t system_count
Number of systems assistance data need is indicated for.
Definition nrf_modem_gnss.h:554
struct nrf_modem_gnss_agnss_system_data_need system[4]
Ephemeris and almanac data need for each system.
Definition nrf_modem_gnss.h:556
A-GNSS notification data frame used by GNSS to let the application know it needs new assistance data.
Definition nrf_modem_gnss.h:547
uint8_t signal_count
Definition nrf_modem_gnss.h:889
struct nrf_modem_gnss_agnss_data_signal_integrity signal[4]
Definition nrf_modem_gnss.h:891
A-GNSS satellite integrity data.
Definition nrf_modem_gnss.h:887
int8_t alpha2
Definition nrf_modem_gnss.h:741
int8_t alpha3
Definition nrf_modem_gnss.h:743
int8_t beta3
Definition nrf_modem_gnss.h:751
int8_t alpha1
Definition nrf_modem_gnss.h:739
int8_t beta0
Definition nrf_modem_gnss.h:745
int8_t alpha0
Definition nrf_modem_gnss.h:737
int8_t beta2
Definition nrf_modem_gnss.h:749
int8_t beta1
Definition nrf_modem_gnss.h:747
A-GNSS Klobuchar ionospheric correction data.
Definition nrf_modem_gnss.h:735
uint8_t orientation_major
Definition nrf_modem_gnss.h:850
uint8_t unc_altitude
Definition nrf_modem_gnss.h:856
int16_t altitude
Definition nrf_modem_gnss.h:835
int32_t longitude
Definition nrf_modem_gnss.h:827
uint8_t unc_semiminor
Definition nrf_modem_gnss.h:847
uint8_t confidence
Definition nrf_modem_gnss.h:863
uint8_t unc_semimajor
Definition nrf_modem_gnss.h:841
int32_t latitude
Definition nrf_modem_gnss.h:820
A-GNSS location data.
Definition nrf_modem_gnss.h:813
uint8_t storm_cond
Definition nrf_modem_gnss.h:771
int16_t ai2
Definition nrf_modem_gnss.h:767
uint8_t storm_valid
Definition nrf_modem_gnss.h:775
int16_t ai1
Definition nrf_modem_gnss.h:763
int16_t ai0
Definition nrf_modem_gnss.h:759
A-GNSS NeQuick ionospheric correction data.
Definition nrf_modem_gnss.h:755
uint64_t integrity_mask
Definition nrf_modem_gnss.h:883
uint8_t signal_id
Definition nrf_modem_gnss.h:877
A-GNSS satellite integrity mask for a signal.
Definition nrf_modem_gnss.h:875
uint16_t integrity_expiry
Integrity assistance parameters expiry time.
Definition nrf_modem_gnss.h:595
uint16_t neq_expiry
NeQuick ionospheric correction parameters expiry time.
Definition nrf_modem_gnss.h:593
uint16_t position_expiry
Position assistance expiry time.
Definition nrf_modem_gnss.h:597
struct nrf_modem_gnss_agnss_sv_expiry sv[127]
Ephemeris and almanac expiry times for satellites.
Definition nrf_modem_gnss.h:601
uint16_t utc_expiry
UTC parameters expiry time.
Definition nrf_modem_gnss.h:589
uint16_t klob_expiry
Klobuchar ionospheric correction parameters expiry time.
Definition nrf_modem_gnss.h:591
uint8_t sv_count
Number of satellites for which expiry times are given.
Definition nrf_modem_gnss.h:599
uint32_t data_flags
Flags indicating the A-GNSS data types needed by GNSS.
Definition nrf_modem_gnss.h:587
A-GNSS data expiry.
Definition nrf_modem_gnss.h:579
int32_t omega0
Definition nrf_modem_gnss.h:721
uint8_t toa
Definition nrf_modem_gnss.h:703
uint8_t wn
Definition nrf_modem_gnss.h:701
int32_t m0
Definition nrf_modem_gnss.h:727
uint16_t e
Definition nrf_modem_gnss.h:707
int16_t delta_i
Definition nrf_modem_gnss.h:709
int16_t omega_dot
Definition nrf_modem_gnss.h:711
uint32_t sqrt_a
Definition nrf_modem_gnss.h:717
int16_t af0
Definition nrf_modem_gnss.h:729
uint8_t sv_health
Definition nrf_modem_gnss.h:713
int32_t w
Definition nrf_modem_gnss.h:723
uint8_t sv_id
Definition nrf_modem_gnss.h:699
uint8_t ioda
Definition nrf_modem_gnss.h:705
int16_t af1
Definition nrf_modem_gnss.h:731
A-GNSS GPS/QZSS almanac data.
Definition nrf_modem_gnss.h:694
uint16_t iodc
Definition nrf_modem_gnss.h:638
uint8_t health
Definition nrf_modem_gnss.h:636
int8_t af2
Definition nrf_modem_gnss.h:642
int8_t tgd
Definition nrf_modem_gnss.h:648
int16_t idot
Definition nrf_modem_gnss.h:672
uint8_t fit_int
Definition nrf_modem_gnss.h:652
uint32_t sqrt_a
Definition nrf_modem_gnss.h:674
int16_t cus
Definition nrf_modem_gnss.h:684
int32_t omega_dot
Definition nrf_modem_gnss.h:666
int16_t crs
Definition nrf_modem_gnss.h:680
int16_t af1
Definition nrf_modem_gnss.h:644
uint8_t ura
Definition nrf_modem_gnss.h:650
int32_t m0
Definition nrf_modem_gnss.h:662
uint8_t sv_id
Definition nrf_modem_gnss.h:634
int32_t af0
Definition nrf_modem_gnss.h:646
int16_t cuc
Definition nrf_modem_gnss.h:690
int32_t i0
Definition nrf_modem_gnss.h:676
uint16_t toc
Definition nrf_modem_gnss.h:640
int16_t cic
Definition nrf_modem_gnss.h:688
int16_t crc
Definition nrf_modem_gnss.h:686
int32_t w
Definition nrf_modem_gnss.h:658
int16_t cis
Definition nrf_modem_gnss.h:682
int16_t delta_n
Definition nrf_modem_gnss.h:660
uint32_t e
Definition nrf_modem_gnss.h:668
int32_t omega0
Definition nrf_modem_gnss.h:678
uint16_t toe
Definition nrf_modem_gnss.h:656
A-GNSS GPS/QZSS ephemeris data.
Definition nrf_modem_gnss.h:629
uint32_t sv_mask
Definition nrf_modem_gnss.h:806
uint16_t date_day
Definition nrf_modem_gnss.h:798
struct nrf_modem_gnss_agnss_gps_data_tow_element sv_tow[32]
Definition nrf_modem_gnss.h:808
uint16_t time_frac_ms
Definition nrf_modem_gnss.h:802
uint32_t time_full_s
Definition nrf_modem_gnss.h:800
A-GNSS GPS system time and satellite TOW data.
Definition nrf_modem_gnss.h:796
uint8_t flags
Definition nrf_modem_gnss.h:786
uint16_t tlm
Definition nrf_modem_gnss.h:784
A-GNSS GPS TOW assistance data for a satellite.
Definition nrf_modem_gnss.h:779
uint8_t wn_lsf
Definition nrf_modem_gnss.h:619
uint8_t wn_t
Definition nrf_modem_gnss.h:615
int32_t a0
Definition nrf_modem_gnss.h:611
uint8_t tot
Definition nrf_modem_gnss.h:613
int8_t dn
Definition nrf_modem_gnss.h:621
int8_t delta_tls
Definition nrf_modem_gnss.h:617
int32_t a1
Definition nrf_modem_gnss.h:609
int8_t delta_tlsf
Definition nrf_modem_gnss.h:625
A-GNSS GPS UTC parameters.
Definition nrf_modem_gnss.h:605
uint8_t sv_id
Satellite ID.
Definition nrf_modem_gnss.h:565
uint8_t system_id
System ID, see GNSS system IDs.
Definition nrf_modem_gnss.h:567
uint16_t ephe_expiry
Ephemeris expiry time in minutes.
Definition nrf_modem_gnss.h:569
uint16_t alm_expiry
Almanac expiry time in minutes.
Definition nrf_modem_gnss.h:571
Ephemeris and almanac expiry times for a satellite.
Definition nrf_modem_gnss.h:563
uint8_t system_id
System ID, see GNSS system IDs.
Definition nrf_modem_gnss.h:533
uint64_t sv_mask_alm
Bit mask indicating the satellites for which the assistance almanac data is needed.
Definition nrf_modem_gnss.h:541
uint64_t sv_mask_ephe
Bit mask indicating the satellites for which the assistance ephemeris data is needed.
Definition nrf_modem_gnss.h:537
Ephemeris and almanac data need for a system.
Definition nrf_modem_gnss.h:531
uint32_t integrity_mask
Definition nrf_modem_gnss.h:871
A-GPS satellite integrity data.
Definition nrf_modem_gnss.h:867
uint8_t month
Definition nrf_modem_gnss.h:428
uint8_t seconds
Definition nrf_modem_gnss.h:436
uint8_t hour
Definition nrf_modem_gnss.h:432
uint16_t year
Definition nrf_modem_gnss.h:426
uint8_t minute
Definition nrf_modem_gnss.h:434
uint8_t day
Definition nrf_modem_gnss.h:430
uint16_t ms
Definition nrf_modem_gnss.h:438
Date and time.
Definition nrf_modem_gnss.h:424
char nmea_str[83]
Definition nrf_modem_gnss.h:508
Single null-terminated NMEA sentence.
Definition nrf_modem_gnss.h:506
float heading_accuracy
Definition nrf_modem_gnss.h:483
uint8_t flags
Definition nrf_modem_gnss.h:495
float tdop
Definition nrf_modem_gnss.h:493
double longitude
Definition nrf_modem_gnss.h:465
float vertical_speed
Definition nrf_modem_gnss.h:477
double latitude
Definition nrf_modem_gnss.h:463
float vertical_speed_accuracy
Definition nrf_modem_gnss.h:479
struct nrf_modem_gnss_sv sv[12]
Definition nrf_modem_gnss.h:497
float speed
Definition nrf_modem_gnss.h:473
float speed_accuracy
Definition nrf_modem_gnss.h:475
float heading
Definition nrf_modem_gnss.h:481
uint32_t execution_time
Definition nrf_modem_gnss.h:499
float pdop
Definition nrf_modem_gnss.h:487
float hdop
Definition nrf_modem_gnss.h:489
float accuracy
Definition nrf_modem_gnss.h:469
float vdop
Definition nrf_modem_gnss.h:491
struct nrf_modem_gnss_datetime datetime
Definition nrf_modem_gnss.h:485
float altitude
Definition nrf_modem_gnss.h:467
float altitude_accuracy
Definition nrf_modem_gnss.h:471
Position, Velocity and Time (PVT) data frame.
Definition nrf_modem_gnss.h:461
uint16_t sv
Definition nrf_modem_gnss.h:447
uint8_t signal
Definition nrf_modem_gnss.h:449
int16_t elevation
Definition nrf_modem_gnss.h:453
uint8_t flags
Definition nrf_modem_gnss.h:457
int16_t azimuth
Definition nrf_modem_gnss.h:455
uint16_t cn0
Definition nrf_modem_gnss.h:451
Space Vehicle (SV) information.
Definition nrf_modem_gnss.h:442