7#ifndef NRF_CLOUD_PGPS_H_
8#define NRF_CLOUD_PGPS_H_
14#include <zephyr/kernel.h>
15#if defined(CONFIG_NRF_MODEM)
16#include <nrf_modem_gnss.h>
18struct nrf_modem_gnss_agnss_data_frame;
20#include "nrf_cloud_agnss_schema_v1.h"
30#define NRF_CLOUD_PGPS_NUM_SV (32U)
74#define NRF_CLOUD_PGPS_REQ_NO_COUNT 0
76#define NRF_CLOUD_PGPS_REQ_NO_INTERVAL 0
78#define NRF_CLOUD_PGPS_REQ_NO_GPS_DAY 0
80#define NRF_CLOUD_PGPS_REQ_NO_GPS_TOD (-1)
115#define ETIMEUNKNOWN 8000
122#define NRF_CLOUD_PGPS_EMPTY_EPHEM_HEALTH (0xff)
343 const struct nrf_modem_gnss_agnss_data_frame *request);
int nrf_cloud_pgps_update(struct nrf_cloud_pgps_result *file_location)
Processes binary P-GPS data using URL received from nRF Cloud.
int nrf_cloud_pgps_process_update(uint8_t *buf, size_t len)
Call this function when your transport receives a block of prediction data. Prediction data must be r...
#define NRF_CLOUD_PGPS_NUM_SV
Definition nrf_cloud_pgps.h:30
bool nrf_cloud_pgps_loading(void)
Find out if P-GPS update is in progress.
int nrf_cloud_pgps_finish_update(void)
Call this function regardless of whether the download succeeded or failed.
void nrf_cloud_pgps_set_leap_seconds(int leap_seconds)
Update the storage of the leap second offset between GPS time and UTC. This called automatically by t...
void nrf_cloud_pgps_request_reset(void)
If previous request for P-GPS data failed, re-enable future retries. This should be called by the app...
int nrf_cloud_pgps_begin_update(void)
Use this function when you use a custom transport mechanism for downloading prediction data....
void nrf_cloud_pgps_clear_location(void)
If location has previously been set, clear it. The application should do this if significant distance...
void(* pgps_event_handler_t)(struct nrf_cloud_pgps_event *event)
Event handler registered with the module to handle asynchronous events from the module.
Definition nrf_cloud_pgps.h:164
int nrf_cloud_pgps_notify_prediction(void)
Schedule a callback when prediction for current time is available. Callback could be immediate,...
int nrf_cloud_pgps_request_all(void)
Requests all available P-GPS data from nRF Cloud via MQTT. Not used for other transports.
nrf_cloud_pgps_event_type
P-GPS event passed to the registered pgps_event_handler.
Definition nrf_cloud_pgps.h:125
@ PGPS_EVT_LOADING
Definition nrf_cloud_pgps.h:131
@ PGPS_EVT_UNAVAILABLE
Definition nrf_cloud_pgps.h:129
@ PGPS_EVT_REQUEST
Definition nrf_cloud_pgps.h:147
@ PGPS_EVT_INIT
Definition nrf_cloud_pgps.h:127
@ PGPS_EVT_AVAILABLE
Definition nrf_cloud_pgps.h:136
@ PGPS_EVT_READY
Definition nrf_cloud_pgps.h:138
int nrf_cloud_pgps_preemptive_updates(void)
Download more predictions if less than CONFIG_NRF_CLOUD_PGPS_REPLACEMENT_THRESHOLD predictions remain...
int nrf_cloud_pgps_init(struct nrf_cloud_pgps_init_param *param)
Initialize P-GPS subsystem. Validates what is stored, then requests any missing predictions,...
int nrf_cloud_pgps_request(const struct gps_pgps_request *request)
Requests specified P-GPS data from nRF Cloud via MQTT. Not used for other transports.
int nrf_cloud_pgps_find_prediction(struct nrf_cloud_pgps_prediction **prediction)
Tries to find an appropriate GPS prediction for the current time.
int nrf_cloud_pgps_inject(struct nrf_cloud_pgps_prediction *p, const struct nrf_modem_gnss_agnss_data_frame *request)
Injects binary P-GPS data to the modem. If request is NULL, it is assumed that only ephemerides assis...
void nrf_cloud_pgps_set_location_normalized(int32_t latitude, int32_t longitude)
Update storage of the most recent known location, in modem-specific normalized format (int32_t)....
int nrf_cloud_pgps_process(const char *buf, size_t buf_len)
Processes binary P-GPS data received from nRF Cloud over MQTT or REST.
void nrf_cloud_pgps_set_location(double latitude, double longitude)
Update the storage of the most recent known location in degrees. This will be injected along with the...
uint16_t prediction_count
Definition nrf_cloud_pgps.h:85
uint32_t gps_time_of_day
Definition nrf_cloud_pgps.h:95
uint16_t gps_day
Definition nrf_cloud_pgps.h:91
uint16_t prediction_period_min
Definition nrf_cloud_pgps.h:87
P-GPS request type.
Definition nrf_cloud_pgps.h:83
struct nrf_cloud_pgps_prediction * prediction
Definition nrf_cloud_pgps.h:153
struct gps_pgps_request * request
Definition nrf_cloud_pgps.h:154
enum nrf_cloud_pgps_event_type type
Definition nrf_cloud_pgps.h:151
Definition nrf_cloud_pgps.h:150
uint32_t storage_base
Definition nrf_cloud_pgps.h:171
pgps_event_handler_t event_handler
Definition nrf_cloud_pgps.h:169
uint32_t storage_size
Definition nrf_cloud_pgps.h:173
Initialization parameters for the module.
Definition nrf_cloud_pgps.h:167
uint16_t ephemeris_count
Definition nrf_cloud_pgps.h:66
uint8_t time_type
Definition nrf_cloud_pgps.h:56
struct nrf_cloud_pgps_system_time time
Definition nrf_cloud_pgps.h:60
uint16_t time_count
Definition nrf_cloud_pgps.h:58
uint8_t ephemeris_type
Definition nrf_cloud_pgps.h:64
uint8_t schema_version
Definition nrf_cloud_pgps.h:62
struct nrf_cloud_agnss_ephemeris ephemerii[(32U)]
Definition nrf_cloud_pgps.h:68
uint32_t sentinel
Definition nrf_cloud_pgps.h:70
P-GPS prediction Flash storage format.
Definition nrf_cloud_pgps.h:54
char * host
Definition nrf_cloud_pgps.h:104
size_t path_sz
Definition nrf_cloud_pgps.h:111
size_t host_sz
Definition nrf_cloud_pgps.h:106
char * path
Definition nrf_cloud_pgps.h:109
nRF Cloud Predicted GPS (P-GPS) result; the location of the P-GPS data file which is to be downloaded...
Definition nrf_cloud_pgps.h:102
uint32_t time_full_s
Definition nrf_cloud_pgps.h:44
uint16_t date_day
Definition nrf_cloud_pgps.h:42
uint32_t pad
Definition nrf_cloud_pgps.h:50
uint32_t sv_mask
Definition nrf_cloud_pgps.h:48
uint16_t time_frac_ms
Definition nrf_cloud_pgps.h:46
nrf_cloud_pgps_system_time is a special version of nrf_cloud_agnss_system_time that does not include ...
Definition nrf_cloud_pgps.h:38